How to Set a Commit Status from GitHub Actions
Post a custom status to a commit via the statuses API so an external gate shows up on the commit and PR.
Use the built-in GITHUB_TOKEN (with statuses: write) to POST to the commit statuses API. The status appears on the commit and the PR checks list with your context name.
Post a status with the API
The token authenticates the statuses API call; context names the check shown on the commit.
.github/workflows/ci.yml
permissions:
statuses: write
jobs:
external-gate:
runs-on: ubuntu-latest
steps:
- run: |
curl -sS -X POST \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/${{ github.repository }}/statuses/${{ github.sha }}" \
-d '{"state":"success","context":"perf-budget","description":"under budget"}'Gotchas
- The job needs
permissions: statuses: writeor the API call 403s. statemust be one oferror,failure,pending,success;contextis the unique check name.- Commit statuses are distinct from check runs - to make a status block merges, add it as a required status check in branch protection.
Frequently asked questions
How do I set a Commit Status from GitHub Actions?
Use the built-in GITHUB_TOKEN (with statuses: write) to POST to the commit statuses API. The status appears on the commit and the PR checks list with your context name.
Post a status with the API?
The token authenticates the statuses API call; context names the check shown on the commit.
Related guides
How to Run rustfmt and clippy in GitHub ActionsCheck Rust formatting and lints in GitHub Actions with rustfmt and clippy so unformatted code or clippy warni…
How to Set a Matrix From Previous Job Output in GitHub ActionsBuild a dynamic GitHub Actions matrix from a previous jobs output by emitting a JSON array to GITHUB_OUTPUT a…
How to Run kubeconform on Manifests in GitHub ActionsValidate Kubernetes manifests against the API schemas in GitHub Actions with kubeconform so invalid YAML is r…