- If a job fails, the whole workflow fails.
- If a step fails, the whole job fails.
- If a job is cancelled, the whole workflow is cancelled.
- If a step is cancelled, the whole job is cancelled.
- Every job/step can succeed/fail/cancel.
- The downstream jobs (with
needs
keyword) or following steps might decide to run, even when the previous jobs/steps have failed/cancelled, using theif
keyword (but this won't change the status of the parent workflow/job):- always()
- cancelled()