Skip to main content

Utilisation de l’interface CLI de dans des workflows

Remarque

Pour plus d’informations sur CLI, consultez À propos de CLI.

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

Vous pouvez exécuter n’importe quelle commande de l’ 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:
          GH_TOKEN: ${{ secrets._TOKEN }}
          ISSUE: ${{ .event.issue.html_url }}

Vous pouvez également exécuter des appels d’API via l’ 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 >> $_ENV
        env:
          GH_TOKEN: ${{ secrets._TOKEN }}
          OWNER: ${{ .repository_owner }}
          REPO: ${{ .event.repository.name }}
      - run: |
          gh issue create --title "Issue report" --body "$NUM_OPEN_ISSUES issues remaining" --repo $_REPOSITORY
        env:
          GH_TOKEN: ${{ secrets._TOKEN }}