Jenkins: skip if node is offline

后端 未结 2 1411
悲哀的现实
悲哀的现实 2020-12-17 22:32

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

2条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-17 23:25

    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 
    

提交回复
热议问题