Sorry for any confusion.  The line: ”println(“There were “+FailuresPresent+" 
test(s) that failed”);" is outside of the if statement resulting in the example 
output at the end of this message.

On Jan 9, 2014, at 9:55 PM, silver <pja...@gmail.com> wrote:

> When I run jobs in parallel, the Build Flow fails or passes as I’d expect.  
> Example:
> 
> parallel (
> { build(job1) },
> { build(job2) },
> { build(job3) },
> )
> 
> All of the jobs are started and if they all pass, the Build Flow passes.  If 
> one fails, the Build Flow fails.
> 
> What I’d like to do is to run jobs sequentially, ignoring a failure *for that 
> moment* but at the end, fail or pass the Build Flow as a whole.  Using 
> “ignore(FAILURE)" doesn’t give me what I want because it will ignore a 
> failure and pass the Build Flow regardless:
> 
> ignore(FAILURE) {build(job1)}
> ignore(FAILURE) {build(job2)}
> ignore(FAILURE) {build(job3)}
> 
> If they all fail, the Build Flow still passes because failures are ignored.  
> But I really need ALL of the jobs to run no matter the outcome of the other 
> jobs, and the Build Flow to pass/fail, depending on each outcome.
> 
> Therefore, I have tried something like this (which I thought I got to 
> actually work at one point but I can’t get it to work again!?!  The closest I 
> can get is explained further down.):
> 
> FailuresPresent = 0;
> try {
>  build(job1)
> }catch(e) {
>  FailuresPresent = FailuresPresent++;
> }
> try {
>  build(job2)
> }catch(e) {
>  FailuresPresent = FailuresPresent++;
> }
> try {
>  build(job3)
> }catch(e) {
>  FailuresPresent = FailuresPresent++;
> }
> if ( FailuresPresent>0) {
>  println(“There were “+FailuresPresent+" test(s) that failed”);
>  throw new Exception("FAILED!”);
> }else {
>  println "Tests PASSED!";
> }
> 
> But the Build Flow will still stop immediately after a failed job (I don’t 
> see my println at the end).  If I use an ignore(FAILURE) wrapper, then the 
> “catch” is ignored and the Build Flow passes.
> 
> I am not using guard/rescue because I don’t need the FailuresPresent to 
> increment every time, only when there is a failure (or do I?  Guard/Rescue is 
> like try/finally, not a try/catch.)
> 
> None of my jobs are dependent on another, I just want them all grouped 
> together and to run sequentially in a single Build Flow if possible.  Running 
> them in parallel maxes out my resources (not Jenkins but my Selenium hub).
> 
> If I wrap the above jobs in a parallel statement, it seems to gives the 
> appearance of it finishing to completion (my print statement at the end is 
> seen) but the Build Flow doesn’t run the other jobs.
> 
> This is the output with the entire try/catch/builds wrapped in a parallel 
> statement (notice job2 and job3 aren’t run but my println at the end is seen:
> 
> parallel {
>    Schedule job job1
>    Build job1 #34 started
>    job1 #34 completed  : UNSTABLE
> }
> There were 0 test(s) that failed
> Tests PASSED!
> 
> Suggestions?  I hope I’m over-thinking this.
> 
> Thanks.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to