Using Jenkins, how can a cascade of builds be triggered? - jenkins

Using Jenkins, I am trying to arrange for the success of one build to trigger another build, so that there will be a cascade of builds until failure.
Given three projects (project1, project2, and project3), I am using Parameterized Trigger Plugin. How should I write the condition in the "Predefined parameters" field.
For example:
project1->success then trigger project2->success then trigger project3
In Jenkins I configure freestyle job.

Use a wrapper job of MultiJob type:
https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin
This will enable you to put each of your projects as a phase in the build and build the logic you need and much more

Look for the "Trigger when build is" Stable

Related

Creating Jobs for Multijob Plugin in Jenkins

I had a requirement for executing jobs in parallel and came across this plugin called MultiJob plugin for Jenkins.
After going through documentation, i created phases and gave job names. But where do i create job basically.I mean the script ,build step and post build step for job "TaskToExecute1" and "TasktoExecute2".
Thanks,
VVP
You need to create the jobs that are referenced from the "Job Name".
So in your example, create a separate job/project (e.g. "New Item" -> "Freestyle Project") and call it TaskToExecute1. Then you can add a build step to that new TaskToExecute job/project.

How to execute single Jenkins job on multiple platforms with different parameters?

I have created one build job in Jenkins. I want to use that same job to run on multiple nodes but with different job parameter.
You can use https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin
Create a new multyjob job, in the build section create a Multijob phase, and trigger your job with "Pre defined parameters" and "Node label parameter" to specify the node to run on, and the values of the parameters you want to trigger your job with.
Good luck!

how to configure job in jekins if first project is build successful then trigger another project and so on with "Multi-configuration project" job

I want to trigger project in jekins if first project is build successful then trigger another project and so on.. how can do it. I hava project1 , project2, and project3, project4, project5 so on. here I am configuring "Multi-configuration project" job.
for exp:- project1->success then trigger project2->success then trigger project3
if any stage failed then doesn't trigger other project.This is "Multi-configuration project" job, because this single job, I am trigger on multiple slaves remotely.
A simple way to do this would be to define this build pipeline using the Pipeline plugin.
This pipeline script should give you the desired behaviour:
build job: 'project1'
build job: 'project2'
build job: 'project3'
build job: 'project4'
build job: 'project5'
i.e. A build of each job will be started in sequence; if any one of them fails, then the subsequent jobs will not be started.
Even with "Multi-configuration project" you should be able to set a post-build action "Trigger parameterized build on other projects". Then you can specify condition which will define when this project should be build, and add parameters, including "build on the same node".

Jenkins MultiJob Plugin does not aggregate downstream test results

I am using the jenkins multijob plugin to execute a number of parallel builds in the same build phase and i want to display the test results in the main multijob project so i select a post-build action step to 'Aggregate down stream test results' and select both options 'Automatically aggregate all downstream tests' and 'Include failed builds in results' but when the jobs complete and i go into the main multijob project it shows 'no tests' under 'Latest Test Result' link...
Has anyone else encountered this issue? My downstream 'child' projects that run in parallel are multi-configuration projects.
As a previous poster indicated, this is an open issue in the Jenkins JIRA and does not work. There is a workaround to achieve what your looking for. Your going to need the Copy Artifact Plugin and to also Archive the test result files as Artifacts in your jobs that are doing the test runs.
After you have installed this and configured your test run jobs properly, go to your Multijob and after all your test phases add a build step "Copy artifacts from another project" for each of the jobs you want the test results from. You can use "Specified by permalink" and use the "Last build" permalink to always retrieve the latest artifacts. Select the artifacts you want to copy (i.e. *.xml), and input your target directory as something like "job1". If you add multiple build steps to copy artifacts from another project, just name your target directories for the copied artifacts something similar like "job2", "job3", etc.
Then select a Post-build action in your Multijob as you would to Publish JUnit test result report (or whatever you prefer) and input **/job*/*.xml (or similar).
This is what I did, and it works just fine. It is a bit manual in the setup, but it works great once its configured.

Triggering the same jenkins job after the build is finished in Jenkins

Is there a way to trigger the same job when the build is finished. I have one job that needed to be run until I aborted it manually. Is there a way to accomplish this?
The easiest way to do this is to add a post build step that builds the same project. Set "Post-build Actions" - "Build other projects" - "Projects to build" to the name of your project and it will loop forever.
This is a pretty crazy request. Are you sure that's what you want to do? If you just want to keep up to date you could just have the job build when the SCM system changes- even down to using the filesystem as an SCM.
If you really want to do it though, it is possible. You can't just tell it to trigger itself, but you can use the REST api.
Add a shell build step with the line
curl -X POST http://localhost:8080/job/Tester/build
and a new job will get scheduled each time you run build.
There is "Build after other projects are built" under "Build Triggers" in job configuration page in which you can specify which project to build after which project. So if you want to continuously run a particular job, you can add Project name i.e your job name in "Projects to watch" field under "Build after other projects are built" and can run it with options :- Trigger only if build is stable
Trigger even if the build is unstable
Trigger even if the build fails
you can try
add build step to create few files - file per condition set
add build step Trigger/call builds on other projects with add parameter factories with For every matching file, invoke one build
the called project might have input file as a parameter - it would be passed from the parent project from #2.

Resources