Skip to main content

Verwenden der GitHub CLI in Workflows

Du kannst ein Skript GitHub CLI in GitHub Actions-Workflows erstellen.

Weitere Informationen zur GitHub CLI findest du unter Informationen zur GitHub CLI.

Die GitHub CLI ist auf allen GitHub-gehosteten Runnern vorinstalliert. Für jeden Schritt, der die GitHub CLI verwendet, musst du eine Umgebungsvariable namens GH_TOKEN auf ein Token mit den erforderlichen Geltungsbereichen festlegen.

Du kannst alle GitHub CLI-Befehle ausführen. Dieser Workflow verwendet beispielsweise den gh issue comment-Unterbefehl, um einen Kommentar hinzuzufügen, wenn ein Issue geöffnet wird.

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 }}

Du kannst API-Aufrufe auch über GitHub CLI ausführen. Dieser Workflow verwendet beispielsweise zuerst den gh api-Unterbefehl, um die GraphQL-API abzufragen und das Ergebnis zu analysieren. Anschließend speichert er das Ergebnis in einer Umgebungsvariablen, auf die er in einem späteren Schritt zugreifen kann. Im zweiten Schritt wird der gh issue create-Unterbefehl verwendet, um ein Issue zu erstellen, das die Informationen aus dem ersten Schritt enthält.

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 }}