Skip to main content

Using GitHub CLI in workflows

You can script with GitHub CLI in GitHub Actions workflows.

To learn more about GitHub CLI, see "About GitHub CLI."

GitHub CLI is preinstalled on all GitHub-hosted runners. For each step that uses GitHub CLI, you must set an environment variable calledGH_TOKENto a token with the required scopes.

You can execute any GitHub CLI command. For example, this workflow uses thegh issue commentsubcommand to add a comment when an issue is opened.

YAML
name:Commentwhenopened
on:
issues:
types:
-opened
jobs:
comment:
runs-on:ubuntu-latest
steps:
-run:ghissuecomment$ISSUE--body"Thank you for opening this issue!"
env:
GH_TOKEN:${{secrets.GITHUB_TOKEN}}
ISSUE:${{github.event.issue.html_url}}

You can also execute API calls through GitHub CLI. For example, this workflow first uses thegh apisubcommand 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 thegh issue createsubcommand to create an issue containing the information from the first step.

YAML
name:Reportremainingopenissues
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}}