/codes/github-actions/job-and-step-conclusions
GitHub Actions conclusions: success, failure, cancelled, skipped
The commands on this page have not been executed by our verification runner yet.updated 2026-10-20
- tool
- GitHub Actions
- versions
- GitHub Actions
- os
- any
GitHub Actions turns process exit codes into results. A step whose process exits 0 succeeds; any other code fails it. A failed step fails its job (unless continue-on-error: true), and the run's result is the combination of its jobs.
Conclusions
| Conclusion | Meaning |
|---|---|
| success | everything that ran succeeded |
| failure | a step or job failed (non-zero exit, or an action reported failure) |
| cancelled | cancelled by a user, by concurrency, or by fail-fast in a matrix |
| skipped | the if: condition was false, or a needed job did not succeed |
| timed_out | the job exceeded timeout-minutes (default 360) |
Status check functions
| Function | True when |
|---|---|
| success() | no earlier step failed or was cancelled (the implicit default of every if:) |
| failure() | an earlier step, or a needed job, failed |
| cancelled() | the run was cancelled |
| always() | always, even after cancellation |
- run: npm test
- name: Upload logs on failure
if: failure()
run: tar czf logs.tgz logs/
- name: Notify
if: always()
run: echo "tests finished with ${{ job.status }}"Step outcome vs conclusion
steps.<id>.outcome is the result before continue-on-error is applied; steps.<id>.conclusion is after. A step that failed with continue-on-error: true has outcome: failure and conclusion: success.
Actions set exit codes too
In a JavaScript action, core.setFailed('message') sets exit code 1; in a Docker or composite action, exiting non-zero fails the step the same way.
Sources
- docs.github.comdocs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/setting-exit-codes-for-actions
- docs.github.comdocs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions#status-check-functions
- docs.github.comdocs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#steps-context
Related pages
errors · github-actionsGitHub Actions: Error: Process completed with exit code 1Process completed with exit code 1 means the last command of a run step failed. Scroll up to the first error in the log; bash -e stops at that command.flags · github-actionsGitHub Actions shell: bash vs the default: -e and pipefailWithout shell:, Linux run steps use bash -e and miss failures inside pipelines. shell: bash runs bash --noprofile --norc -eo pipefail and catches them.codes · bashBash exit codes: 0, 1, 2, 126, 127, 128+n and 255What bash exit codes mean: 0 success, 1 general error, 2 misuse of builtins, 126 not executable, 127 not found, 128+n killed by signal n, and how to read $?.