Jenkins parallel Stage Failure - "failFast" Aborts Sibling Branches
One branch of a parallel block failed. With failFast true, Jenkins immediately aborts the sibling branches, so the log shows several branches "Aborted due to earlier failure(s)" even though only one truly broke.
What this error means
A parallel stage fails and the console shows one branch with a real error plus other branches reading Aborted due to earlier failure(s). The aborted branches did not fail on their own - failFast cancelled them when the first one broke.
[unit-tests] ERROR: script returned exit code 1
[integration-tests] Aborted due to earlier failure(s)
[lint] Aborted due to earlier failure(s)
Finished: FAILURECommon causes
One branch genuinely failed
A single parallel branch threw an error (failed test, non-zero step). The other "Aborted" lines are a consequence, not independent failures.
failFast cancels remaining branches
failFast true (or parallelsAlwaysFailFast()) tells Jenkins to abort siblings as soon as any branch fails, which is efficient but hides which branch was the real cause unless you read carefully.
How to fix it
Identify and fix the branch that actually failed
- Find the branch whose log shows a real error, not "Aborted due to earlier failure(s)".
- Fix that branch’s root cause; the aborted siblings will pass once it does.
- Use per-branch logs or the Blue Ocean/stage view to isolate the failing branch quickly.
Tune failFast to match your needs
Disable failFast to let all branches run (so you see every failure at once), or keep it on to fail fast and save executor time.
parallel(
failFast: false, // run all branches even if one fails
'unit': { sh 'make test-unit' },
'integration': { sh 'make test-int' }
)How to prevent it
- Keep parallel branches independent so a real failure is easy to localize.
- Disable failFast when you want a full picture of all failing branches.
- Name branches clearly so the failing one is obvious in the stage view.