簡體   English   中英

當節點離線時讓 Jenkins 快速失敗

[英]Have Jenkins Fail Fast When Node Is Offline

我有一個 MultiJob 項目(使用 Jenkins Multijob 插件制作),有一系列 MultiJob 階段。 假設這些作業之一稱為 SubJob01。 構建的每個作業都配置了“限制此項目可以運行的位置”選項以綁定到一個節點。 SubJob01 綁定到 Slave01。

我希望這些作業在節點離線時快速失敗,而不是說“(待定 - 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");

jenkins 管道語句“beforeAgent true”可用於評估進入代理之前的 when 條件。

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

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM