A step has 'id: unit' and 'continue-on-error: true'. The step fails. What is the difference between 'steps.unit.outcome' and 'steps.unit.conclusion'?
Select an answer to reveal the explanation.
Short Explanation and Infographic
outcome is the real result of the step; conclusion is the final applied result after continue-on-error. With continue-on-error on a failing step, outcome is failure and conclusion becomes success.
Full explanation below image
Full Explanation
steps.<id>.outcome reflects whether the step actually succeeded or failed. steps.<id>.conclusion reflects the result after applying continue-on-error. When continue-on-error: true and the step fails, outcome is failure but conclusion is success, allowing the job to proceed while still letting later steps inspect the real failure via outcome. If you only check conclusion, you may miss that the step actually failed. They are not aliases. Both properties are available for ordinary workflow steps, not only composite actions. This distinction is critical when writing conditional steps like if: steps.unit.outcome == 'failure' to upload failure diagnostics without failing the whole job.