跳至主要内容

在 GitHub Actions 工作流程中使用 GitHub 应用程序进行身份验证的 API 请求

您可以使用 GitHub 应用程序的安装访问令牌在 GitHub Actions 工作流程中进行身份验证的 API 请求。您也可以将令牌传递给自定义操作,以使操作能够进行身份验证的 API 请求。

关于 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 请求。您还可以将安装访问令牌传递给需要令牌的自定义操作。

  1. 注册一个 GitHub App。为您的 GitHub App 注册提供访问所需资源的必要权限。有关更多信息,请参阅 "注册 GitHub App" 和 "为 GitHub App 选择权限"。

  2. 将您的 GitHub App 的应用程序 ID 存储为 GitHub Actions 配置变量。您可以在应用程序的设置页面上找到应用程序 ID。应用程序 ID 与客户端 ID 不同。有关导航到您的 GitHub App 设置页面的更多信息,请参阅 "修改 GitHub App 注册"。有关存储配置变量的更多信息,请参阅 "变量"。

  3. 为您的应用程序生成一个私钥。将生成的私钥文件的内容存储为一个秘密。(存储文件的全部内容,包括 -----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----。)有关更多信息,请参阅 "管理 GitHub App 的私钥"。有关存储秘密的更多信息,请参阅 "在 GitHub Actions 中使用秘密"。

  4. 在您的用户帐户或组织上安装 GitHub App,并授予它访问您希望工作流程访问的任何存储库的权限。有关更多信息,请参阅 "安装您自己的 GitHub App"。

  5. 在您的 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 替换为存储应用程序私钥的密钥的名称。

YAML

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