跳至主要内容

在工作流中使用 GitHub CLI

您可以在 GitHub Actions 工作流中使用 GitHub CLI 编写脚本。

要了解有关 GitHub CLI 的更多信息,请参阅“关于 GitHub CLI”。

GitHub CLI 预安装在所有 GitHub 托管的运行器上。对于每个使用 GitHub CLI 的步骤,您必须将名为 GH_TOKEN 的环境变量设置为具有所需范围的令牌。

您可以执行任何 GitHub CLI 命令。例如,此工作流使用 gh issue comment 子命令在打开问题时添加注释。

YAML
name: Comment when opened
on:
  issues:
    types:
      - opened
jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
      - run: gh issue comment $ISSUE --body "Thank you for opening this issue!"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          ISSUE: ${{ github.event.issue.html_url }}

您还可以通过 GitHub CLI 执行 API 调用。例如,此工作流首先使用 gh api 子命令查询 GraphQL API 并解析结果。然后,它将结果存储在它可以在后续步骤中访问的环境变量中。在第二步中,它使用 gh issue create 子命令创建包含第一步信息的 issue。

YAML
name: Report remaining open issues
on: 
  schedule: 
    # Daily at 8:20 UTC
    - cron: '20 8 * * *'
jobs:
  track_pr:
    runs-on: ubuntu-latest
    steps:
      - run: |
          numOpenIssues="$(gh api graphql -F owner=$OWNER -F name=$REPO -f query='
            query($name: String!, $owner: String!) {
              repository(owner: $owner, name: $name) {
                issues(states:OPEN){
                  totalCount
                }
              }
            }
          ' --jq '.data.repository.issues.totalCount')"

          echo 'NUM_OPEN_ISSUES='$numOpenIssues >> $GITHUB_ENV
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OWNER: ${{ github.repository_owner }}
          REPO: ${{ github.event.repository.name }}
      - run: |
          gh issue create --title "Issue report" --body "$NUM_OPEN_ISSUES issues remaining" --repo $GITHUB_REPOSITORY
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}