groovy - 当节点离线时 Jenkins 快速失败

标签 groovy jenkins

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

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

有谁知道在所有节点都离线的情况下快速失败构建的方法吗?我可以将 MultiJob 项目与系统 Groovy 脚本分开,以检查所需的节点是否离线,但这似乎是在错误的地方重新发明了本来应该是一个功能的功能。

最佳答案

我最终创建了这个效果很好的解决方案。 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");

关于groovy - 当节点离线时 Jenkins 快速失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18964119/

相关文章:

groovy - 访问为 Jenkins Groovy 插件脚本指定的变量

api - 是否可以检索我通过其 API 触发的 Jenkins 构建的 ID?

git - 如何禁用 Jenkins checkout 和 git 插件 SSL 验证?

git - 我如何通过 git 命令行工具获取 pull 请求中更改的文件列表?

jenkins - 如何让 Jenkins 使用已经 checkout 的代码库?

github - Jenkins 无法识别我的 github 存储库的别名 ssh

groovy - 迭代时从映射中删除键/值

java - 如何通过循环值并为每个文件进行 HTTP 调用来生成多个文件?

groovy - 为Groovy安装HTTPBuilder

groovy - 使用 Spock 在多个返回结果中抛出 IOException