В этой статье описывается, как быстро приступить к работе с REST API GitHub с помощью GitHub CLI, JavaScript или curl
. Более подробное руководство см. в разделе Начало работы с REST API.
Начало работы с GitHub CLI
Использование GitHub CLI в командной строке
GitHub CLI — это самый простой способ использовать REST API GitHub из командной строки.
Примечание: Следующий пример предназначен для GitHub.com. Если вы предпочитаете попробовать пример с помощью GitHub AE, необходимо заменить octocat/Spoon-Knife
репозиторием на GitHub AE. Кроме того, можно повторно выполнить gh auth login
команду для проверки подлинности в GitHub.com вместо GitHub AE.
-
Установите GitHub CLI, если еще не установили. Инструкции по установке см. в репозитории GitHub CLI.
-
Используйте подкоманду
auth login
для проверки подлинности в GitHub CLI: Дополнительные сведения см. в документации поauth login
GitHub CLI.gh auth login
-
Используйте подкоманду
api
для выполнения запроса к API. Дополнительные сведения см. в документации поapi
GitHub CLI.gh api repos/octocat/Spoon-Knife/issues
Использование GitHub CLI в GitHub Actions
Вы можете использовать GitHub CLI в рабочих процессах GitHub Actions. Дополнительные сведения см. в разделе Использование GitHub CLI в рабочих процессах.
Вместо того, чтобы использовать команду gh auth login
, передайте маркер доступа в качестве переменной среды GH_TOKEN
. GitHub рекомендует использовать встроенный GITHUB_TOKEN
вместо создания маркера. Если это невозможно, сохраните маркер в качестве секрета и замените GITHUB_TOKEN
в приведенном ниже примере именем секрета. Дополнительные сведения о GITHUB_TOKEN
см. в разделе Автоматическая проверка подлинности токенов. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты.
Примечание: Следующие примеры рабочих процессов предназначены для GitHub.com. Если вы предпочитаете использовать примеры с помощью GitHub AE, необходимо заменить octocat/Spoon-Knife
репозиторием в GitHub AE.
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api repos/octocat/Spoon-Knife/issues
При проверке подлинности с помощью GitHub App можно создать маркер доступа к установке в рабочем процессе:
-
Храните идентификатор GitHub App как секрет. В следующем примере замените
APP_ID
именем секрета. Идентификатор приложения можно найти на странице параметров приложения или через API. Дополнительные сведения см. в разделе Приложения GitHub в документации по REST API. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты. -
Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая
-----BEGIN RSA PRIVATE KEY-----
и-----END RSA PRIVATE KEY-----
.) В следующем примере заменитеAPP_PEM
именем секрета. Дополнительные сведения см. в разделе Управление закрытыми ключами для приложений GitHub. -
Добавьте шаг для создания маркера и используйте его вместо
GITHUB_TOKEN
. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Пример:# Этот рабочий процесс использует действия, которые не сертифицированы GitHub. # Они предоставляются сторонним поставщиком, и на них распространяются # отдельные условия обслуживания, политика конфиденциальности и поддержка # документации. on: workflow_dispatch: jobs: track_pr: runs-on: ubuntu-latest steps: - name: Generate token id: generate_token uses: tibdex/github-app-token@c2055a00597a80f713b78b1650e8d3418f4d9a65 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate_token.outputs.token }} run: | gh api repos/octocat/Spoon-Knife/issues
Начало работы с JavaScript
Вы можете использовать Octokit.js для взаимодействия с REST API GitHub в скриптах JavaScript. Дополнительные сведения см. в разделе Создание скриптов с помощью REST API и JavaScript.
Использование Octokit.js
Примечание: Следующий пример предназначен для GitHub.com. Если вы хотите попробовать пример с помощью GitHub AE, необходимо заменить octocat/Spoon-Knife
репозиторием в GitHub AE. Кроме того, можно создать новый Octokit
экземпляр без указания baseURL
.
-
Создание маркера доступа Например, создайте маркер доступа пользователя personal access token или GitHub App. Дополнительные сведения см. в разделах Создание personal access tokenили Идентификация и авторизация пользователей для приложений GitHub.
Предупреждение. Считайте маркер доступа своим паролем.
Чтобы обеспечить безопасность маркера, вы можете хранить маркер в виде секрета и запустить скрипт с помощью GitHub Actions. Дополнительные сведения см. в разделе Использование Octokit.js в GitHub Actions.
Если эти варианты недоступны, рассмотрите возможность безопасного хранения маркера с помощью другой службы, например 1Password CLI.
-
Установить службы
octokit
. Например,npm install octokit
. Другие способы установки или загрузкиoctokit
см. в Octokit.js README. -
Импортируйте
octokit
в скрипт. Например,import { Octokit } from "octokit";
. Другие способы импортаoctokit
см. в Octokit.js README. -
Создайте экземпляр
Octokit
с помощью маркера. ЗаменитеYOUR-TOKEN
собственным маркером.const octokit = new Octokit({ auth: 'YOUR-TOKEN' });
-
Используйте
octokit.request
для выполнения запроса. Отправьте метод HTTP и путь в качестве первого аргумента. Укажите любой путь, запрос и параметры текста в объекте в качестве второго аргумента. Например, в следующем запросе используется метод HTTPGET
, путь —/repos/{owner}/{repo}/issues
и параметрыowner: "octocat"
иrepo: "Spoon-Knife"
.await octokit.request("GET /repos/{owner}/{repo}/issues", { owner: "octocat", repo: "Spoon-Knife", });
Использование Octokit.js в GitHub Actions
Вы также можете выполнять скрипты JavaScript в рабочих процессах GitHub Actions. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
GitHub рекомендует использовать встроенный GITHUB_TOKEN
вместо создания маркера. Если это невозможно, сохраните маркер в качестве секрета и замените GITHUB_TOKEN
в приведенном ниже примере именем секрета. Дополнительные сведения о GITHUB_TOKEN
см. в разделе Автоматическая проверка подлинности токенов. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты.
Примечание: Следующий пример предназначен для GitHub.com. Если вы хотите попробовать пример с помощью GitHub AE, необходимо заменить octocat/Spoon-Knife
репозиторием в GitHub AE. Кроме того, можно создать новый Octokit
экземпляр без указания baseURL
.
См. следующий пример рабочего процесса:
- Извлекает содержимое репозитория.
- Настраивает Node.js.
- Устанавливает
octokit
. - Сохраняет значение
GITHUB_TOKEN
как переменную средыTOKEN
и выполняет.github/actions-scripts/use-the-api.mjs
, которые могут получить доступ к этой переменной среды в качествеprocess.env.TOKEN
Пример рабочего процесса:
on:
workflow_dispatch:
jobs:
use_api_via_script:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- name: Check out repo content
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '16.17.0'
cache: npm
- name: Install dependencies
run: npm install octokit
- name: Run script
run: |
node .github/actions-scripts/use-the-api.mjs
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
Пример скрипта JavaScript с путем к файлу .github/actions-scripts/use-the-api.mjs
:
import { Octokit } from "octokit"
const octokit = new Octokit({
auth: process.env.TOKEN
});
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
});
const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})
console.log(titleAndAuthor)
} catch (error) {
console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}
При проверке подлинности с помощью GitHub App можно создать маркер доступа к установке в рабочем процессе:
-
Храните идентификатор GitHub App как секрет. В следующем примере замените
APP_ID
именем секрета. Идентификатор приложения можно найти на странице параметров приложения или через API приложений. Дополнительные сведения см. в разделе Приложения GitHub. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты. -
Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая
-----BEGIN RSA PRIVATE KEY-----
и-----END RSA PRIVATE KEY-----
.) В следующем примере заменитеAPP_PEM
именем секрета. Дополнительные сведения см. в разделе Управление закрытыми ключами для приложений GitHub. -
Добавьте шаг для создания маркера и используйте его вместо
GITHUB_TOKEN
. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Например:# Этот рабочий процесс использует действия, которые не сертифицированы GitHub. # Они предоставляются сторонним поставщиком, и на них распространяются # отдельные условия обслуживания, политика конфиденциальности и поддержка # документации. on: workflow_dispatch: jobs: use_api_via_script: runs-on: ubuntu-latest steps: - name: Check out repo content uses: actions/checkout@v3 - name: Setup Node uses: actions/setup-node@v3 with: node-version: '16.17.0' cache: npm - name: Install dependencies run: npm install octokit - name: Generate token id: generate_token uses: tibdex/github-app-token@c2055a00597a80f713b78b1650e8d3418f4d9a65 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Run script run: | node .github/actions-scripts/use-the-api.mjs env: TOKEN: ${{ steps.generate_token.outputs.token }}
Начало работы с использованием curl
Использование curl
в командной строке
Примечания.
- Следующий пример предназначен для GitHub.com. Если вы предпочитаете попробовать пример с помощью GitHub AE, замените
https://api.github.com
https://HOSTNAME/api/v3
на , а заменитеHOSTNAME
именем узла для GitHub AE. Также необходимо заменитьoctocat/Spoon-Knife
репозиторием в GitHub AE. - Если вы хотите выполнять запросы API из командной строки, GitHub рекомендует использовать GitHub CLI, что упрощает проверку подлинности и запросы. Дополнительные сведения о начале работы с REST API с помощью GitHub CLI см. в версии этой статьи для GitHub CLI.
-
Установите
curl
, если он еще не установлен на компьютере. Чтобы проверка, еслиcurl
установлен, выполните командуcurl --version
в командной строке. Если выходные данные содержат сведения о версииcurl
, она устанавливается. Если появится сообщение, похожее наcommand not found: curl
, необходимо скачать и установитьcurl
. Дополнительные сведения см. на странице скачивания проекта curl. -
Создание маркера доступа Например, создайте маркер доступа пользователя personal access token или GitHub App. Дополнительные сведения см. в разделах Создание personal access tokenили Идентификация и авторизация пользователей для приложений GitHub.
Предупреждение. Считайте маркер доступа своим паролем.
Вместо можно также использовать GitHub CLI .
curl
GitHub CLI выполнит задачи по проверке подлинности. Дополнительные сведения см. в версии этой страницы для GitHub CLI.Если эти варианты недоступны, рассмотрите возможность безопасного хранения маркера с помощью другой службы, например 1Password CLI.
-
Используйте команду
curl
для выполнения запроса. Передайте маркер в заголовокAuthorization
. ЗаменитеYOUR-TOKEN
собственным маркером.curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"
Примечание. В большинстве случаев передать маркер с помощью
Authorization: Bearer
илиAuthorization: token
. Однако при передаче веб-токена JSON (JWT) необходимо использоватьAuthorization: Bearer
.
Использование curl
команд в GitHub Actions
Команды также можно использовать curl
в рабочих процессах GitHub Actions.
GitHub рекомендует использовать встроенный GITHUB_TOKEN
вместо создания маркера. Если это невозможно, сохраните маркер в качестве секрета и замените GITHUB_TOKEN
в приведенном ниже примере именем секрета. Дополнительные сведения о GITHUB_TOKEN
см. в разделе Автоматическая проверка подлинности токенов. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты.
Примечание: Следующие примеры рабочих процессов предназначены для GitHub.com. Если вы предпочитаете попробовать примеры с помощью GitHub AE, обратите внимание на следующие различия.
- Необходимо заменить
https://api.github.com
https://HOSTNAME/api/v3``HOSTNAME
именем узла для GitHub AE. - Необходимо заменить
octocat/Spoon-Knife
репозиторием в GitHub AE.
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer $GH_TOKEN"
При проверке подлинности с помощью GitHub App можно создать маркер доступа к установке в рабочем процессе:
-
Храните идентификатор GitHub App как секрет. В следующем примере замените
APP_ID
именем секрета. Идентификатор приложения можно найти на странице параметров приложения или через API приложений. Дополнительные сведения см. в разделе Приложения GitHub. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты. -
Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая
-----BEGIN RSA PRIVATE KEY-----
и-----END RSA PRIVATE KEY-----
.) В следующем примере заменитеAPP_PEM
именем секрета. Дополнительные сведения см. в разделе Управление закрытыми ключами для приложений GitHub. -
Добавьте шаг для создания маркера и используйте его вместо
GITHUB_TOKEN
. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Например:# Этот рабочий процесс использует действия, которые не сертифицированы GitHub. # Они предоставляются сторонним поставщиком, и на них распространяются # отдельные условия обслуживания, политика конфиденциальности и поддержка # документации. on: workflow_dispatch: jobs: use_api: runs-on: ubuntu-latest steps: - name: Generate token id: generate_token uses: tibdex/github-app-token@c2055a00597a80f713b78b1650e8d3418f4d9a65 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate_token.outputs.token }} run: | curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
Дальнейшие действия
Дополнительные сведения см. в статье Начало работы с REST API.