How to mark Jenkins builds as SUCCESS only on specific error exit values (other than 0)?

Alright, I went on IRC #jenkins and no-one new about a plugin to set a particular job status depending on a particular exit code :( I managed to do what I wanted by creating an Execute shell step with the following content:

bash -c "/path/to/myscript.sh; if [ "\$?" == "$EXPECTED_EXIT_CODE" ]; then exit 0; else exit 1; fi"

-Running the script under bash -c allows catching the exit code and prevents Jenkins from stopping build execution when that exit code is different than 0 (which it normally does).

-\$? is interpreted as $? after the script execution and represents its exit code.

-$EXPECTED_EXIT_CODE is one of my job parameters which defines the exit code I'm expecting.

-The if statement simply does the following: if I get the expected exit code, exit with 0 so that the build is marked as SUCCESS, else exit with 1 so that the build is marked as FAILURE.


/path/to/myscript.sh || if [ "$?" == "$EXPECTED_EXIT_CODE" ]; then continue; else exit 1; fi

I would use continue instead of exit 0 in case you have other items below that you need to run through.


Can handle it via the Text-finder Plugin:

  • Have your script print the exit-code it is about to exit with, like:
    Failed on XXX - Exiting with RC 2

  • Use the Text-finder Plugin to catch that error-message and mark the build as 'Failed' or 'Unstable',
    for example, if you decide RC 2, 3 and 4 should mark the build as 'Unstable', look for text in this pattern:
    Exiting with RC [2-4].