【问题标题】:Have Jenkins Fail Fast When Node Is Offline节点离线时让 Jenkins 快速失败
【发布时间】:2021-05-29 00:33:21
【问题描述】:

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

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

有没有人知道在所有节点都离线的情况下快速构建失败的方法?我可以在 MultiJob 项目中穿插系统 Groovy 脚本,以检查所需节点是否离线,但这似乎是在错误的地方重新发明应该已经是一项功能的功能。

【问题讨论】:

  • 我不知道现有的功能可以做到这一点,但你可以添加一个 shell 可执行步骤来尝试远程登录到从站的端口 (22) 吗?

标签: groovy jenkins


【解决方案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");

【讨论】:

    【解决方案2】:

    jenkins 管道语句'beforeAgent true'可用于评估进入代理之前的条件。

        stage('Windows') {
          when {
            beforeAgent true
            expression { return ("${TARGET_NODES}".contains("windows")) }
          }
          agent { label 'win10' }
          steps {
            cleanWs()
            ...
          }
    

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-14
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      相关资源
      最近更新 更多