Skip to main content

在工作流中使用 GITHUB_TOKEN 进行身份验证

了解如何使用 <a0 /> 代表 进行身份验证。

本教程介绍如何在 GITHUB_TOKEN 工作流中使用 GitHub Actions 身份验证,包括将令牌传递给操作、发出 API 请求和配置安全自动化权限的示例。

有关参考信息,请参阅 GitHub Actions 的工作流语法

在工作流程中使用 GITHUB_TOKEN

可以使用GITHUB_TOKEN标准语法来引用机密: ${{ secrets.GITHUB_TOKEN }} 使用 GITHUB_TOKEN 包含将令牌作为输入传递给操作的示例,或使用令牌发出经过身份验证的 GitHub API 请求。

重要

即使工作流没有明确将 GITHUB_TOKEN 传递到操作,操作也可以通过 github.token 上下文访问 GITHUB_TOKEN。 作为一种良好的安全做法,应该始终通过限制授予 GITHUB_TOKEN 的权限,确保操作只有所需的最低访问权限。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

示例 1:将 GITHUB_TOKEN 作为输入传递

此示例工作流程使用 GitHub CLI,该方式需要 GITHUB_TOKEN 作为 GH_TOKEN 输入参数的值:

YAML
name: Open new issue
on: workflow_dispatch

jobs:
  open-issue:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - run: |
          gh issue --repo ${{ github.repository }} \
            create --title "Issue title" --body "Issue body"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

例2:调用 REST API

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

name: Create issue on commit

on: [ push ]

jobs:
  create_issue:
    runs-on: ubuntu-latest
    permissions:
      issues: write
    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 }}_."
            }' \
          --fail

修改 GITHUB_TOKEN 的权限

在工作流程文件中使用 permissions 键来修改 GITHUB_TOKEN 对于整个工作流程或单个作业的权限。 这允许您为工作流程或作业配置所需的最小权限。 作为一种良好的安全做法,应授予 GITHUB_TOKEN 最低所需访问权限。

若要查看可使用权限的列表及其参数化名称,请参阅 管理个人访问令牌

本文前面部分中的两个工作流程示例展示了在作业级别使用的 permissions 键。

授予额外权限

如果需要需要不需要在工作流 GITHUB_TOKEN中不可用的权限的令牌,请在 GitHub App 工作流中创建并生成安装访问令牌。 有关详细信息,请参阅“在GitHub Actions工作流中使用GitHub应用发出经过身份验证的 API 请求”。 或者,可以创建一个 personal access token、将其存储为存储库中的机密,并使用带有语法的工作流中的 ${{ secrets.SECRET_NAME }} 令牌。 有关详细信息,请参阅 管理个人访问令牌在 GitHub Actions 中使用机密

后续步骤