Skip to main content
GitHub Actions’ continue-on-error expression lets you prevent failures in a specific step or an entire job from aborting your workflow. You can use this setting to:
  • Handle non-critical errors without stopping downstream steps.
  • Upload logs and artifacts even when tests or checks fail.
  • Experiment with unstable configurations in a matrix without blocking the run.
Below is an overview of how continue-on-error behaves at each level:

Continue-on-error at the Step Level

When you set continue-on-error: true on a step, a non-zero exit code won’t fail the job. This is ideal for allowing post-test uploads or cleanup steps to run even if tests or coverage checks fail.
The image shows a GitHub Docs page about GitHub Actions, specifically focusing on the "continue-on-error" feature in workflow syntax. It includes an example of preventing a specific failing matrix job from causing a workflow run to fail.
In this example, the Code Coverage job executes tests, enforces a coverage threshold, and then uploads the report regardless of success or failure.
By enabling continue-on-error on the coverage step, your workflow still uploads the coverage report even if the threshold isn’t met.
Example output when coverage fails:
Despite the exit code, the Archive Coverage Report step proceeds and your artifact is saved.

Continue-on-error at the Job Level

Applying continue-on-error on a job prevents that job from failing the entire workflow run. This is useful for matrix jobs where you want an “experimental” axis to fail quietly.
Here, any job with matrix.experimental: true will not block the workflow on failure. Below is the workflow summary, showing completed unit tests, a coverage job with an error, and the uploaded artifacts:
The image shows a GitHub Actions workflow summary with completed unit testing jobs and a code coverage job that has an error. It also lists artifacts produced during runtime, including "Code-Coverage-Result" and "Mocha-Test-Result."

Watch Video