This is step-by-step instruction based on this blog: http://fatalfailure.wordpress.com/2011/06/14/jenkins-hudson-getting-the-overall-status-in-the-upstream-job-from-the-downstream-jobs/
a) In 'Post-build Actions' section set 'Build other projects' checkbox
b) Add downstream jobs in 'Build other projects', separated by comma
c) Set 'Trigger even if the build is unstable'
2. Setting up fingerprinting to connect upstream job with downstream jobs
a) In 'Post-build Actions' section set 'Record fingerprints of files to track usage' checkbox
b) Set '**' in 'Files to fingerprint' field
c) Set 'Keep the build logs of dependencies' checkbox
a) In 'Post-build Actions' section set 'Record fingerprints of files to track usage' checkbox
b) Set '**' in 'Files to fingerprint' field
c) Set 'Keep the build logs of dependencies' checkbox
2. Updating the status of upstream job to reflect the statuses of downstream jobs
a) In 'Post-build Actions' section set 'Groovy Postbuild' checkbox
b) Enter the following code in 'Groovy script' field:
Upstream job configuration
1. Adding downstream jobsa) In 'Post-build Actions' section set 'Build other projects' checkbox
b) Add downstream jobs in 'Build other projects', separated by comma
c) Set 'Trigger even if the build is unstable'
2. Setting up fingerprinting to connect upstream job with downstream jobs
a) In 'Post-build Actions' section set 'Record fingerprints of files to track usage' checkbox
b) Set '**' in 'Files to fingerprint' field
c) Set 'Keep the build logs of dependencies' checkbox
Downstream jobs configuration
1. Setting up fingerprinting to connect upstream job with downstream jobsa) In 'Post-build Actions' section set 'Record fingerprints of files to track usage' checkbox
b) Set '**' in 'Files to fingerprint' field
c) Set 'Keep the build logs of dependencies' checkbox
2. Updating the status of upstream job to reflect the statuses of downstream jobs
a) In 'Post-build Actions' section set 'Groovy Postbuild' checkbox
b) Enter the following code in 'Groovy script' field:
upstreamBuilds = manager.build.getUpstreamBuilds(); upstreamJob = upstreamBuilds.keySet().iterator().next(); lastUpstreamBuild = upstreamJob.getLastBuild(); if(lastUpstreamBuild.getResult().isBetterThan(manager.build.result)) { lastUpstreamBuild.setResult(manager.build.result); }