When a build "fails" due to test failures, and post steps are configured with the option "Run only if build succeeds", these post steps are still executed.
I'm having the same issue on my builds.
Please Jenkins' team take about it, it's so annoying .... dev team is complain a lot about it for me.
The issue is in;
The awkward behavior since 2010 has been that if a unit test fails that the build is actually a SUCCESS. This has the result of the post steps always running if a unit test has failed.
A potential way to fix this would be to add a configuration option (globally or for the build) that jobs with failed unit tests should not be "markAsSuccess".
Code quality issue;
MavenBuilder.markAsSuccess = true;
Maven3Builder.markAsSuccess = true;
An alternative to public static booleans should probably be found!
Hi everyone. I need this bug/feature so much that I'm willing to pay 50.00 bucks for it.
This offer is registered at FreedomSponsors (http://www.freedomsponsors.org/core/issue/51/unstable-main-build-leads-to-post-steps-being-executed-even-if-configured-not-to).
Once you solve it (according to the acceptance criteria described there), just create a FreedomSponsors account and mark it as resolved (oh, you'll need a Paypal account too)
I'll then check it out and will gladly pay up!
If anyone else would like to throw in a few bucks to elevate the priority on this issue, you should check out FreedomSponsors!
please give more details - which post builds steps you use? or provide <publishers> section content of job's xml config file
please give more details - which post-build steps you use? or provide <publishers> section content of job's xml config file
I'm executing a shell script afterwards. Actually what it is it should test first my build (maven build) and if the tests fail the script should be not executed.
I put it into the Post Steps...
Actually publishers is empty:
There are stored postbuilders:
<command>env && ./jdeploy $Server</command>
In the jenkins web interface it is:
Run only if build succeeds
Run only if build succeeds or is unstable
Run regardless of build result
Should the post-build steps run only for successful builds, etc.
Command env && ./jdeploy $Server
I'm using "Invoke top-level Maven targets" post steps.
Could you check, does <runPostStepsIfResult>success</runPostStepsIfResult> exists in job's xml config
I got this in the end of the job config file:
I have the same as Thomas
Could you place this system groovy script in postbuild steps as first step. Check console output after reproducing bug to see evaluated build result.
def build = Thread.currentThread().executable
println('Build result:' + build.getResult().toString())
Here's the output:
P.S.: Note that on that execution, post-steps were configured as "Run only if build succeeds"
I get the same error with Jenkins 1.473, Maven build unstable but post steps still executed.
I have also tried to pass a -Dmaven.test.failure.ignore=false, the build is then failed but post steps are still executed :/
Is there any planned date/version to get a fix for this annoying problem?
Even though the final build state of a maven project with test failures was correct or better the icon/ball had the correct color (yellow) - the build internally did not expose the correct state to post build steps.
This causes issues with post build steps and publishers relying on the correct state of the build.
just placed a pull request to fix this issue: https://github.com/jenkinsci/jenkins/pull/654
Code changed in jenkins
[FIXED JENKINS-14102] mark maven build with test failures as unstable
Code changed in jenkins
[FIXED JENKINS-14102] fix also for maven2 and add test cases