A step has 'id: smoke' and 'continue-on-error: true'. The step's command exits with code 1. A later step uses 'if: steps.smoke.outcome == 'failure''. What happens?
Select an answer to reveal the explanation.
Short Explanation and Infographic
continue-on-error keeps the job going and sets conclusion to success, but outcome still reflects the real failure—so if conditions on outcome still see failure.
Full explanation below image
Full Explanation
GitHub Actions exposes both 'outcome' and 'conclusion' for steps. outcome is the real result of the step (success/failure). conclusion incorporates continue-on-error: if the step fails but continue-on-error is true, conclusion becomes success so the job is not failed by that step. Conditions that check steps.<id>.outcome == 'failure' still match after a soft-failed step. The job continues; later steps are not cancelled solely because of that soft failure. Step context remains available. Use outcome when you need to branch on the true result; use conclusion when you care about how the job treated the step.