Сведения о проверке подлинности GitHub Actions
Если необходимо выполнить запросы API с проверкой подлинности в рабочем процессе GitHub Actions или выполнить пользовательское действие, требующее маркера, следует использовать встроенный GITHUB_TOKEN
, если это возможно. GITHUB_TOKEN
Однако доступ к ресурсам может получить только в репозитории рабочего процесса. Если вам нужно получить доступ к дополнительным ресурсам, таким как ресурсы в организации или другом репозитории, можно использовать GitHub App. Дополнительные сведения о том, почему можно использовать GitHub App для personal access token, см. в разделе Создание приложений GitHub.
Проверка подлинности с помощью GitHub App
Чтобы использовать 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см. в разделе Изменение регистрации приложения GitHub. Дополнительные сведения о хранении переменных конфигурации см. в разделе Хранение сведений в переменных.
-
Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Храните все содержимое файла, включая
-----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_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@v1 with: app-id: ${{ vars.APP_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@v1
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Use the token
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh api octocat