Skip to main content

Utilisation de l’interface CLI de GitHub dans des workflows

Vous pouvez créer des scripts avec GitHub CLI dans les workflows GitHub Actions.

Pour en savoir plus sur GitHub CLI, consultez « À propos de GitHub CLI ».

L’GitHub CLI est préinstallé sur tous les exécuteurs hébergés par GitHub. Pour chaque étape qui utilise l’GitHub CLI, vous devez définir une variable d’environnement appelée GITHUB_TOKEN sur un jeton avec les étendues requises.

Vous pouvez exécuter n’importe quelle commande de l’GitHub CLI. Par exemple, ce workflow utilise la sous-commande gh issue comment pour ajouter un commentaire lorsqu’un problème est ouvert.

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:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          ISSUE: ${{ github.event.issue.html_url }}

Vous pouvez également exécuter des appels d’API via l’GitHub CLI. Par exemple, ce workflow utilise d’abord la sous-commande gh api pour interroger l’API GraphQL et analyser le résultat. Ensuite, il stocke le résultat dans une variable d’environnement auquel il peut accéder dans une étape ultérieure. Dans la deuxième étape, il utilise la sous-commande gh issue create pour créer un problème contenant les informations de la première étape.

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:
          GITHUB_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:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}