关于 GitHub Actions 身份验证
如果需要在 GitHub Actions 工作流中发出经过身份验证的 API 请求,或者需要执行需要令牌的自定义操作,应尽可能使用内置 。 但是, 只能访问工作流存储库中的资源。 如果需要访问其他资源,例如组织或其他存储库中的资源,可以使用 GitHub App。 如需详细了解为什么优先使用 GitHub App 而不是 personal access token,请参阅“AUTOTITLE”。
使用 GitHub App 进行身份验证
若要使用 GitHub App 发出经过身份验证的 API 请求,必须注册 GitHub App,存储应用的凭据并安装应用。 完成此操作后,可以使用应用创建安装访问令牌,该令牌可用于在 GitHub Actions 工作流中发出经过身份验证的 API 请求。 还可以将安装访问令牌传递给需要令牌的自定义操作。
-
注册 GitHub App。 为 GitHub App 注册授予访问所需资源所需的权限。 有关详细信息,请参阅 AUTOTITLE 和 AUTOTITLE。
-
将 GitHub App 的应用 ID 存储为 GitHub Actions 配置变量。 可以在应用的设置页上找到应用 ID。 应用 ID 不同于客户端 ID。 若要详细了解如何导航到 GitHub App 的设置页,请参阅“AUTOTITLE”。 有关储存配置变量的详细信息,请参阅“AUTOTITLE”。
-
为应用生成私钥。 将所生成文件的内容作为机密进行存储。 (存储文件的全部内容,包括 和 。)有关详细信息,请参阅“AUTOTITLE”。 有关存储机密的详细信息,请参阅“AUTOTITLE”。
-
在正确的帐户上安装 GitHub App,并为其授予权限和访问任何你希望工作流访问的仓库的权限。 有关详细信息,请参阅“AUTOTITLE”。
-
在 GitHub Actions 工作流中,创建可用于发出 API 请求的安装访问令牌。
为此,可以使用 GitHub 拥有的操作,如以下示例所示。 如果不想使用此操作,可以创建分支和修改 操作,也可以编写脚本,使工作流手动创建安装令牌。 有关详细信息,请参阅“AUTOTITLE”。
以下示例工作流使用 操作生成安装访问令牌。 然后,工作流使用令牌通过 GitHub CLI 发出 API 请求。
在以下工作流中,将 替换为存储应用 ID 的配置变量的名称。 将 替换为存储应用私钥的机密的名称。
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@v2
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@v2
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