Skip to main content

Utilizar el CLI de GitHub en los flujos de trabajo

Puedes hacer scripts con el GitHub CLI en los flujos de trabajo de GitHub Actions.

Para más información sobre GitHub CLI, consulta "Acerca del CLI de GitHub".

El GitHub CLI está preinstalado en todos los ejecutores hospedados en GitHub. Para cada paso en el se use GitHub CLI, debe establecer una variable de entorno llamada GH_TOKEN em un token con los ámbitos necesarios.

Puedes ejecutar cualquier comando del GitHub CLI. Por ejemplo, este flujo de trabajo usa el subcomando gh issue comment para agregar un comentario cuando se abre una incidencia.

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

También puedes ejecutar llamadas de la API a través de GitHub CLI. Por ejemplo, este flujo de trabajo usa primero el subcomando gh api para consultar GraphQL API y analizar el resultado. Entonces, almacenará el resultado en una variable de ambiente a la que pueda acceder en un paso posterior. En el segundo paso, usa el subcomando gh issue create para crear una incidencia que contiene la información del primer paso.

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