Status: Resolved (View Workflow)
perform method that return boolean for publisher is deprecated now and AbortException with reason message is a new style.
In current situation when you have two publishers:
1) If build SUCCESS (build.getResult()) then do action and FAIL the publisher.
2) if build SUCCESS - do action
Because of 1) returned boolean build summary result is set to failed.
So what status will see 2) publisher?
If 1) publisher fail the build with 'return false', then second publisher will still see SUCCESS state and do unexpected action
If 1) throw AbortException, then build result will be set to FAILURE and 2) publisher will see correct fail status.
The error in this place https://github.com/jenkinsci/jenkins/blob/555e2d593fbb419d2fad7e9cfae5911daf3d30e3/core/src/main/java/hudson/model/AbstractBuild.java#L719-L729
if branch sets build Result immediately for throwen error and later for boolean.
Also AbortException shouldn't print stacktraces, issue in ancient code here:
- depends on
JENKINS-30730 AbstractBuildExecution#reportError should work will any kind of Build Step
- is related to
JENKINS-26936 support thrown from publisher job statuses
JENKINS-27066 Matrix project doesn't run all aggregators if one of them throws exception.
- links to
Code changed in jenkins
User: Kanstantsin Shautsou
[FIXED JENKINS-26964] Handle AbortException right
(cherry picked from commit 625a22e63b73bd387d2b33cbb66d3ec05037ea26)
Integrated in jenkins_main_trunk #4292
[FIXED JENKINS-26964] Handle AbortException right (Revision e18bde37c9e5f02482eb0ab7394029ff733dbf85)
Result = UNSTABLE
ogondza : e18bde37c9e5f02482eb0ab7394029ff733dbf85
Not sure why JIRA link daemon did not notice the merge here.