关于 GitHub Actions 身份验证
如果需要在 GitHub Actions 工作流中进行身份验证的 API 请求,或者需要执行需要令牌的自定义操作,应尽可能使用内置的GITHUB_TOKEN
。但是,GITHUB_TOKEN
只能访问工作流存储库中的资源。如果需要访问其他资源,例如组织中的资源或其他存储库中的资源,可以使用 GitHub App。有关为什么可能更倾向于使用 GitHub App 而不是个人访问令牌的更多信息,请参阅“关于创建 GitHub Apps”。
使用 GitHub App 进行身份验证
为了使用 GitHub App 进行身份验证的 API 请求,必须注册一个 GitHub App,存储应用程序的凭据并安装应用程序。完成此操作后,可以使用您的应用程序创建安装访问令牌,该令牌可用于在 GitHub Actions 工作流中进行身份验证的 API 请求。您还可以将安装访问令牌传递给需要令牌的自定义操作。
-
注册 GitHub App。为您的 GitHub App 注册提供访问所需资源的必要权限。更多信息,请参阅“注册 GitHub App”和“为 GitHub App 选择权限”。
-
将您的 GitHub App 的应用程序 ID 存储为 GitHub Actions 配置变量。您可以在应用程序的设置页面上找到应用程序 ID。应用程序 ID 与客户端 ID 不同。有关导航到 GitHub App 设置页面的更多信息,请参阅“修改 GitHub App 注册”。有关存储配置变量的更多信息,请参阅“在变量中存储信息”。
-
为您的应用程序生成私钥。将生成的文件的全部内容存储为密钥。(存储文件的全部内容,包括
-----BEGIN RSA PRIVATE KEY-----
和-----END RSA PRIVATE KEY-----
。)更多信息,请参阅“管理 GitHub Apps 的私钥”。有关存储密钥的更多信息,请参阅“在 GitHub Actions 中使用密钥”。 -
将 GitHub App 安装到您的用户帐户或组织上,并授予其访问您希望工作流访问的任何存储库的权限。更多信息,请参阅“安装您自己的 GitHub App”。
-
在您的 GitHub Actions 工作流中,创建一个安装访问令牌,您可以使用它来发出 API 请求。
为此,您可以使用 GitHub 自有的操作,如下例所示。如果您不想使用此操作,您可以 fork 并修改
actions/create-github-app-token
操作,或者您可以编写一个脚本来让您的工作流手动创建安装令牌。更多信息,请参阅“作为 GitHub App 安装进行身份验证”。以下示例工作流使用
actions/create-github-app-token
操作生成安装访问令牌。然后,工作流使用该令牌通过 GitHub CLI 发出 API 请求。在以下工作流中,将
APP_ID
替换为您存储应用程序 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