如果需要在 Actions 工作流中发出经过身份验证的 API 请求,或者需要执行需要令牌的自定义操作,应尽可能使用内置 _TOKEN
。 但是,_TOKEN
只能访问工作流存储库中的资源。 如果需要访问其他资源,例如组织或其他存储库中的资源,可以使用 App。 如需详细了解为什么优先使用 App 而不是 personal access token,请参阅“关于创建 应用”。
若要使用 App 发出经过身份验证的 API 请求,必须注册 App,存储应用的凭据并安装应用。 完成此操作后,可以使用应用创建安装访问令牌,该令牌可用于在 Actions 工作流中发出经过身份验证的 API 请求。 还可以将安装访问令牌传递给需要令牌的自定义操作。
注册 App。 为 App 注册授予访问所需资源所需的权限。 有关详细信息,请参阅 注册 应用 和 为 Apps 选择权限。
将 App 的应用 ID 存储为 Actions 配置变量。 可以在应用的设置页上找到应用 ID。 应用 ID 不同于客户端 ID。 若要详细了解如何导航到 App 的设置页,请参阅“修改 应用注册”。 有关储存配置变量的详细信息,请参阅“在变量中存储信息”。
为应用生成私钥。 将所生成文件的内容作为机密进行存储。 (存储文件的全部内容,包括
-----BEGIN RSA PRIVATE KEY-----
和-----END RSA PRIVATE KEY-----
。)有关详细信息,请参阅“管理 应用的私钥”。 有关存储机密的详细信息,请参阅“在 Actions 中使用机密”。在用户帐户或组织上安装 App,并向其授予对希望工作流访问的任何存储库的访问权限。 有关详细信息,请参阅“安装自己的 应用”。
在 Actions 工作流中,创建可用于发出 API 请求的安装访问令牌。
为此,可以使用 拥有的操作,如以下示例所示。 如果不想使用此操作,可以创建分支和修改
actions/create--app-token
操作,也可以编写脚本,使工作流手动创建安装令牌。 有关详细信息,请参阅“验证为 应用程序安装”。以下示例工作流使用
actions/create--app-token
操作生成安装访问令牌。 然后,工作流使用令牌通过 CLI 发出 API 请求。在以下工作流中,将
APP_ID
替换为存储应用 ID 的配置变量的名称。 将APP_PRIVATE_KEY
替换为存储应用私钥的机密的名称。
on: workflow_dis: jobs: demo_app_authentication: runs-on: ubuntu-latest steps: - name: Generate a token id: generate-token uses: actions/create--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_dis:
jobs:
demo_app_authentication:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: actions/create--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