Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jenkins running parallel scripts

Tags:

jenkins

I am new to Jenkins and need some help..

I have 4 shell scripts : test1.sh, test2.sh, test3.sh and test4.sh

I want test2.sh to only run if test1.sh runs successfully and test4.sh to only run if test3.sh runs successfully. I also want test1.sh and test3.sh to run in parallel.

How could I achieve it in Jenkins?

I am using "Execute shell script on remote host using ssh" and "Conditional steps(multiple)" (just exploring). I have also set up keys so as to communicate with remote server.

Illustration using screen shot or other way would be helpful.

Thank you!

like image 652
Rio Avatar asked Apr 14 '14 14:04

Rio


People also ask

Can Jenkins run parallel builds?

Jenkins is a great CI tool when it comes to flexibility. Every simple thing can be done in ten different ways, including parallelizing a build.

Can we run parallel jobs in Jenkins?

Parallel Job Execution in Jenkins In Jenkins, there are several ways to implement parallel job execution. One of the common approaches is the parent-child build model. In this model - a parent (upstream) job is triggering child (downstream) jobs.


1 Answers

First, ensure that test1.sh and test3.sh return the standard success code when they succeed (0). Then the simple way, which works in any command line, not just Jenkins, is to use this command line:

((test1.sh && test2.sh) &) ; ((test3.sh && test4.sh) &)

Each pair of parentheses forms a subshell, double-amperands mean "if first succeeds then run second", and single ampersand mean "run in backgorund". So you get the equivalent of two backgrounded shells each running two scripts, which will exit if the first script doesn't return 0.

The Jenkins-specific solution is to have a node with two (or more) runners. Create two jobs, and tie both to that node. Each job runs a single shell, either test1.sh && test2.sh, or test3.sh && test4.sh.

like image 165
Paul Hicks Avatar answered Oct 15 '22 00:10

Paul Hicks