Trying to find the answer why it doesn't work for case when I use def 
jobBuild = build job: 'myjob', propagate: false, 
*wait:false*
On Wednesday, May 17, 2017 at 12:55:33 PM UTC+3, Bill Dennis wrote:
>
> Ah just saw you need the job to call all builds even if one fails. You can 
> do it with a parallel section like this:
>
> Map buildResults = [:]
>
> Boolean failedJobs = false
>
> void nofify_email(Map results) {
>     echo "TEST SIMULATE notify: ${results.toString()}"
> }
>
> Boolean buildJob(String jobName, Map results) {
>
>     def jobBuild = build job: jobName, propagate: false
>
>     def jobResult = jobBuild.getResult()
>
>     echo "Build of '${jobName}' returned result: ${jobResult}"
>
>     results[jobName] = jobResult
>
>     return jobResult == 'SUCCESS'
> }
>
> pipeline {
>
>     agent any
>
>     stages {
>
>         stage('Parallel Builds') {
>
>             steps {
>
>                 parallel(
>
>                         "testJob1": {
>                             script {
>                                 if (!buildJob('testJob1', buildResults)) {
>                                     failedJobs = true
>                                 }
>                             }
>                         },
>
>                         "testJob2": {
>                             script {
>                                 if (!buildJob('testJob2', buildResults)) {
>                                     failedJobs = true
>                                 }
>                             }
>                         },
>                 )
>             }
>         }
>
>         stage('Completion') {
>
>             steps {
>                 script {
>                     if (failedJobs) {
>                         error("One or more jobs have failed")
>                     }
>                 }
>             }
>         }
>     }
>
>     post {
>
>         always {
>             echo "Build results: ${buildResults.toString()}"
>         }
>
>         success {
>             echo "All builds completed OK"
>         }
>
>         failure {
>             echo "A job failed"
>
>             script {
>                 nofify_email(buildResults)
>             }
>         }
>     }
> }
>
>
>
> And output looks like this:
>
> Started by user anonymous
> [Pipeline] node
> Running on master in /var/jenkins_home/workspace/foo
> [Pipeline] {
> [Pipeline] stage
> [Pipeline] { (Parallel Builds)
> [Pipeline] parallel
> [Pipeline] [testJob1] { (Branch: testJob1)
> [Pipeline] [testJob2] { (Branch: testJob2)
> [Pipeline] [testJob1] script
> [Pipeline] [testJob1] {
> [Pipeline] [testJob2] script
> [Pipeline] [testJob2] {
> [Pipeline] [testJob1] build (Building testJob1)
> [testJob1] Scheduling project: testJob1
> [Pipeline] [testJob2] build (Building testJob2)
> [testJob2] Scheduling project: testJob2
> [testJob1] Starting building: testJob1 #8
> [testJob2] Starting building: testJob2 #4
> [Pipeline] [testJob2] echo
> [testJob2] Build of 'testJob2' returned result: SUCCESS
> [Pipeline] [testJob2] }
> [Pipeline] [testJob2] // script
> [Pipeline] [testJob2] }
> [testJob1] Build of 'testJob1' returned result: FAILURE
> [Pipeline] [testJob1] echo
> [Pipeline] [testJob1] }
> [Pipeline] [testJob1] // script
> [Pipeline] [testJob1] }
> [Pipeline] // parallel
> [Pipeline] }
> [Pipeline] // stage
> [Pipeline] stage
> [Pipeline] { (Completion)
> [Pipeline] script
> [Pipeline] {
> [Pipeline] error
> [Pipeline] }
> [Pipeline] // script
> [Pipeline] }
> [Pipeline] // stage
> [Pipeline] stage
> [Pipeline] { (Declarative: Post Actions)
> [Pipeline] echo
> Build results: [testJob2:SUCCESS, testJob1:FAILURE]
> [Pipeline] echo
> A job failed
> [Pipeline] script
> [Pipeline] {
> [Pipeline] echo
> TEST SIMULATE notify: [testJob2:SUCCESS, testJob1:FAILURE]
> [Pipeline] }
> [Pipeline] // script
> [Pipeline] }
> [Pipeline] // stage
> [Pipeline] }
> [Pipeline] // node
> [Pipeline] End of Pipeline
> ERROR: One or more jobs have failed
> Finished: FAILURE
>
>
> --Bill
>
> On Wednesday, 17 May 2017 03:45:27 UTC+1, Jesse Kinross-Smith wrote:
>>
>> How can I do this right - I want the results from a job I run (I need to 
>> run a dozen of these in succession and will email devs if one of them 
>> fails) 
>>
>> try{ BuildResults = build job: 'testJob'; currentBuild.result='SUCCESS'; 
>>> } catch(e){ currentBuild.result = 'FAILURE'; } finally { 
>>> notify_email(BuildResults); }
>>
>>
>> if i do the above I only get a valid BuildResults in notify_email IF the 
>> job is successful, 
>> if it fails it causes an exception saying No such property: BuildResults
>>
>> currentBuild is useless as it's the pipeline results, not the job results 
>> which is what I want
>>
>> I need the try/catch so I can continue to run my other jobs - otherwise 
>> it'll stop immediately once one job fails
>>
>> I'm sure there's some syntax I'm missing here, but I'm struggling to find 
>> it.
>>
>> Any help you can provide is appreciated.
>>
>> Regards,
>>
>> Jesse
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/ce336731-8b03-4fc9-97d2-c2add009d95a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to