publicRavi
publicRavi

Reputation: 2763

Jenkins: skip if node is offline

I have a task that executes on n machines based on a label. If for some reason, some of these machines are offline, I do not want Jenkins to put them in a queue, and wait until they are online. I would like Jenkins to execute the job on the remaining machines and complete the job. Any suggestions?

Edit 1: I realized that the job is tied to all the machines: Screenshot

I was forced to do this because I needed this job to run simultaneously on all the machines. So, my question remains the same. If some of these machines are offline, I would like to skip the job on them, rather than wait/queue.

Edit 2: Jenkins CLI has a clear queue command. It seems promising for the time.

Upvotes: 10

Views: 7985

Answers (2)

Noam Manos
Noam Manos

Reputation: 16971

A fine solution can be achieved using GroovyAxis Plugin and the following script, that will return Axis list of online slaves only:

def axis = []
for (slave in hudson.model.Hudson.instance.slaves) {
 if (slave.getComputer().isOnline().toString() == "true") {
   axis += slave.name
 }
}
return axis

UPDATE: Since Jenkins 2.0 the node API has been changed, so use Node.toComputer() instead: http://javadoc.jenkins-ci.org/hudson/model/Node.html#toComputer%28%29

def axis = []
for (slave in jenkins.model.Jenkins.instance.getNodes()) {
 if (slave.toComputer().isOnline()) {
    axis += slave.getDisplayName()
 }
}
return axis 

Upvotes: 8

Mahdi Yusuf
Mahdi Yusuf

Reputation: 21028

If the task is attached in a way that it only runs on a particular node, it will not be able to run it on other machines.

If that isn't the case then the task will run on any of the available executors, this is the default behaviour.

So in order check to see if the task can run on other nodes go to the job > configure and check the setting of the following.

enter image description here

If that is disable on the task, then you will need to check the nodes that they accept any jobs this can be found under the node settings. It should read like the following.

enter image description here

Goodluck.

Upvotes: 0

Related Questions