Note
To learn more about CLI, see About CLI.
CLI is preinstalled on all -hosted runners. For each step that uses CLI, you must set an environment variable called GH_TOKEN
to a token with the required scopes.
You can execute any CLI command. For example, this workflow uses the gh issue comment
subcommand to add a comment when an issue is opened.
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 }}
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 }}
You can also execute API calls through CLI. For example, this workflow first uses the gh api
subcommand to query the GraphQL API and parse the result. Then it stores the result in an environment variable that it can access in a later step. In the second step, it uses the gh issue create
subcommand to create an issue containing the information from the first step.
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 }}
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 }}