Issue
- Whenever I print out the field:
currentBuild.result
it isnull
. When does this get set or am I supposed to set it?
Environment
- CloudBees Jenkins Enterprise
- Pipeline
Resolution
You are supposed to set it yourself. You can use a try
catch
block for this.
Example that forces a failure then prints result:
node {
try {
// do something that fails
sh "exit 1"
currentBuild.result = 'SUCCESS'
} catch (Exception err) {
currentBuild.result = 'FAILURE'
}
echo "RESULT: ${currentBuild.result}"
}
Output:
Started by user anonymous
[Pipeline] Allocate node : Start
Running on built-in in /tmp/example/workspace/test
[Pipeline] node {
[Pipeline] sh
[test] Running shell script
+ exit 1
[Pipeline] echo
RESULT: FAILURE
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
Finished: FAILURE
Example that doesn’t fail then prints result:
node {
try {
// do something that doesn't fail
echo "Im not going to fail"
currentBuild.result = 'SUCCESS'
} catch (Exception err) {
currentBuild.result = 'FAILURE'
}
echo "RESULT: ${currentBuild.result}"
}
Output:
Started by user anonymous
[Pipeline] Allocate node : Start
Running on built-in in /tmp/example/workspace/test
[Pipeline] node {
[Pipeline] echo
Im not going to fail
[Pipeline] echo
RESULT: SUCCESS
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
Finished: SUCCESS
See also How to iterate through the done build and rerun only steps that failed in Workflow for how this applies to stages.
5 Comments