关于 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 App 的私钥"。有关存储秘密的更多信息,请参阅 "在 GitHub Actions 中使用秘密"。 -
在您的用户帐户或组织上安装 GitHub App,并授予它访问您希望工作流程访问的任何存储库的权限。有关更多信息,请参阅 "安装您自己的 GitHub App"。
-
在您的 GitHub Actions 工作流程中,创建一个安装访问令牌,您可以使用它来发出 API 请求。
为此,您可以使用 GitHub 自有的操作,如以下示例所示。如果您不想使用此操作,您可以分叉并修改
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