我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

使用 GITHUB_TOKEN 进行身份验证

GitHub 提供一个令牌,可用于代表 GitHub 操作 进行身份验证。

GitHub 操作 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud 和 GitHub One。 GitHub 操作 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 更多信息请参阅“GitHub 的产品”。

本文内容

对仓库具有 write 权限的任何人都可以创建、读取和使用密码。

关于 GITHUB_TOKEN 密码

GitHub 会自动创建 GITHUB_TOKEN 密码以在工作流程中使用。 您可以使用 GITHUB_TOKEN 在工作流程运行中进行身份验证。

当您启用 GitHub 操作 时,GitHub 在您的仓库中安装 GitHub 应用程序。 GITHUB_TOKEN 密码是一种 GitHub 应用程序 安装访问令牌。 您可以使用安装访问令牌代表仓库中安装的 GitHub 应用程序 进行身份验证。 令牌的权限仅限于包含您的工作流程的仓库。 更多信息请参阅“GITHUB_TOKEN 的权限”。

在每个作业开始之前, GitHub 将为作业提取安装访问令牌。 令牌在作业完成后过期。

令牌在 github.token 上下文中也可用。 更多信息请参阅“GitHub 操作 的上下文和表达式语法”。

在工作流程中使用 GITHUB_TOKEN

要使用 GITHUB_TOKEN 密码,必须在工作流程文件中引用它。 使用令牌可能包括将令牌作为输入传递给需要该令牌的操作,或进行经过身份验证的 GitHub API 调用。

使用仓库的 GITHUB_TOKEN 代表 GitHub 操作 应用程序执行任务时,GITHUB_TOKEN 触发的事件不会创建新的工作流程运行。 这可以防止意外创建递归工作流程运行。 例如,如果工作流程运行使用仓库的 GITHUB_TOKEN 推送代码,则即使仓库包含配置为在 push 事件发生时运行的工作流程,新工作流程也不会运行。

GITHUB_TOKEN 作为输入传递的示例

此示例工作流程使用贴标器操作,需要 GITHUB_TOKEN 作为 repo-token 输入参数的值:

name: Pull request labeler
on:
- pull_request
jobs:
  triage:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/labeler@v2
      with:
        repo-token: ${{ secrets.GITHUB_TOKEN }}

调用 REST API 的示例

您可以使用 GITHUB_TOKEN 进行经过验证的 API 调用。 此示例工作流程使用 GitHub REST API 创建议题:

name: Create issue on commit
on:
- push
jobs:
  create_commit:
    runs-on: ubuntu-latest
    steps:
    - name: Create issue using REST API
      run: |
        curl --request POST \
        --url https://api.github.com/repos/${{ github.repository }}/issues \
        --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
        --header 'content-type: application/json' \
        --data '{
          "title": "Automated issue for commit: ${{ github.sha }}",
          "body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_."
          }'

GITHUB_TOKEN 的权限

有关 GitHub 应用程序 可通过各种权限访问的 API 端点的信息,请参阅“GitHub 应用程序 权限”。

权限访问类型通过复刻的仓库访问
操作读/写读取
检查读/写读取
内容读/写读取
部署读/写读取
issues读/写读取
元数据读取读取
读/写读取
拉取请求读/写读取
仓库项目读/写读取
状态读/写读取

如果您需要的令牌需要 GITHUB_TOKEN 中未提供的权限,您可以创建个人访问令牌并将其设置为仓库中的密码:

  1. 使用或创建具有该仓库适当权限的令牌。 更多信息请参阅“创建个人访问令牌”。
  2. 添加令牌作为工作流程仓库中的密码,然后使用 ${{ secrets.SECRET_NAME }} 语法进行引用。 更多信息请参阅“创建和使用加密密码”。

问问别人

找不到要找的内容?

联系我们