Об GitHub Actions аутентификации
Если вам нужно делать аутентифицированные API-запросы в рабочем GitHub Actions процессе или выполнить пользовательское действие, требующее токена, используйте встроенный GITHUB_TOKEN вариант, если возможно.
GITHUB_TOKEN Однако доступ к ресурсам может получить только в репозитории рабочего процесса. Если вам нужно получить доступ к дополнительным ресурсам, таким как ресурсы в организации или в другом репозитории, вы можете использовать GitHub App. Для получения дополнительной информации о том, почему вы можете использовать a GitHub App вместо personal access token, см. О создании приложений GitHub.
Аутентификация с помощью GitHub App
Чтобы использовать a GitHub App для аутентифицированных запросов на API, необходимо зарегистрировать GitHub App, сохранить учетные данные приложения и установить приложение. После этого вы можете использовать приложение для создания токена доступа для установки, который можно использовать для аутентифицированных запросов API в рабочем GitHub Actions процессе. Маркер доступа к установке также можно передать пользовательскому действию, требующего маркера.
-
Зарегистрировать .GitHub App Дайте вашей GitHub App регистрации необходимые права для доступа к нужным ресурсам. Дополнительные сведения см. в разделе [AUTOTITLE и Регистрация приложения GitHub](/apps/creating-github-apps/setting-up-a-github-app/choosing-permissions-for-a-github-app).
-
Сохраняйте идентификатор клиента вашего GitHub App как GitHub Actions конфигурационную переменную. Идентификатор клиента можно найти на странице параметров приложения. Идентификатор клиента отличается от идентификатора приложения. Для получения дополнительной информации о переходе на страницу настроек GitHub Appдля вашего , смотрите АВТОЗАГОЛОВОК. Дополнительные сведения о хранении переменных конфигурации см. в разделе Хранение сведений в переменных.
-
Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Храните все содержимое файла, включая
-----BEGIN RSA PRIVATE KEY-----и-----END RSA PRIVATE KEY-----.) Дополнительные сведения см. в разделе Управление приватными ключами для приложений GitHub. Дополнительные сведения о хранении секретов см. в разделе Использование секретов в GitHub Actions. -
Установите GitHub App его на правильном аккаунте и предоставите ему права и доступ к любым репозиториям, к которым вы хотите получить доступ для вашего процесса. Дополнительные сведения см. в разделе Установка собственного приложения GitHub.
-
В вашем GitHub Actions рабочем процессе создайте токен доступа для установки, который можно использовать для запросов API.
Для этого можно использовать GitHubдействие -принадлежащее, как показано в следующем примере. Если вы предпочитаете не использовать это действие, можно вилировать и изменить
actions/create-github-app-tokenдействие или создать скрипт, чтобы рабочий процесс создавал маркер установки вручную. Дополнительные сведения см. в разделе Аутентификация как установка приложения GitHub.В следующем примере рабочий процесс использует
actions/create-github-app-tokenдействие для создания маркера доступа к установке. Затем рабочий процесс использует токен для запроса API через GitHub CLI.В следующем рабочем процессе замените
APP_CLIENT_IDназвание конфигурационной переменной, где вы хранили идентификатор клиента. ЗаменитеAPP_PRIVATE_KEYименем секрета, в котором хранится закрытый ключ приложения.
on:
workflow_dispatch:
jobs:
demo_app_authentication:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v3
with:
client-id: ${{ vars.APP_CLIENT_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Use the token
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh api octocat
on:
workflow_dispatch:
jobs:
demo_app_authentication:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v3
with:
client-id: ${{ vars.APP_CLIENT_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Use the token
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh api octocat