节点脱机时Jenkins快速失败

pgn*_*674 7 groovy jenkins

我有一个MultiJob项目(使用Jenkins Multijob插件制作),带有一系列MultiJob阶段.假设其中一个作业叫做SubJob01.构建的作业每个都配置为"限制此项目可以运行的位置"选项,以绑定到一个节点.SubJob01与Slave01绑定.

我希望如果这些作业在节点离线时快速失败,而不是说"(pending-slave01离线)".具体来说,我希望在SubJob01中有一个构建尝试的记录,其中构建被标记为失败.这样,我可以配置我的MultiJob项目来处理我想要的情况,而不是使用Jenkins构建超时插件来中止整个事情.

如果所有节点都处于脱机状态,有没有人知道一种失败的方法 - 快速构建?我可以使用系统Groovy脚本来散布MultiJob项目,以检查所需的节点是否处于脱机状态,但这似乎是在错误的地方重新发明应该已经成为一个特性的东西.

pgn*_*674 1

我最终创建了这个效果很好的解决方案。SubJob01 的第一个构建步骤是执行系统 ​​Groovy 脚本,这是该脚本:

import java.util.regex.Matcher
import java.util.regex.Pattern

int exitcode = 0
println("Looking for Offline Slaves:");
for (slave in hudson.model.Hudson.instance.slaves) {
 if (slave.getComputer().isOffline().toString() == "true"){
 println('  * Slave ' + slave.name + " is offline!");
   if (slave.name == "Slave01") {
     println('    !!!! This is Slave01 !!!!');
     exitcode++;
   } // if slave.name
  } // if slave offline
} // for slave in slaves

println("\n\n");
println "Slave01 is offline: " + hudson.model.Hudson.instance.getNode("Slave01").getComputer().isOffline().toString();
println("\n\n");

if (exitcode > 0){
 println("The Slave01 slave is offline - we can not possibly continue....");
 println("Please contact IT to resolve the slave down issue before retrying the build.");
 return 1;
} // if

println("\n\n");
Run Code Online (Sandbox Code Playgroud)