跳至主要内容

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

您可以使用来自 GitHub App 的安装访问令牌在 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 Apps 的私钥”。有关存储密钥的更多信息,请参阅“在 GitHub Actions 中使用密钥”。

  4. 将 GitHub App 安装到您的用户帐户或组织上,并授予其访问您希望工作流访问的任何存储库的权限。更多信息,请参阅“安装您自己的 GitHub App”。

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

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