2013-09-23 6 views
7

У меня есть проект MultiJob (сделанный с плагином Jenkins Multijob) с серией фаз MultiJob. Скажем, одно из этих заданий называется SubJob01. Каждый из построенных заданий настраивается с параметром «Ограничить, где этот проект может быть запущен», который должен быть привязан к одному узлу. SubJob01 привязан к Slave01.Имейте Jenkins Fail Fast, когда узел отключен

Я бы хотел, чтобы эти задания не удались быстро, когда узел отключен, вместо того, чтобы говорить «(pending-slave01 is offline)». В частности, я хочу, чтобы там была запись попытки сборки в SubJob01, при этом сборка была помечена как неудачная. Таким образом, я могу настроить свой проект MultiJob для обработки ситуации, как хотелось бы, вместо использования плагина тайм-аута сборки Jenkins, чтобы прервать все это.

Кто-нибудь знает, как быстро построить сборку, если все узлы находятся в автономном режиме? Я мог бы объединить проект MultiJob с системными сценариями Groovy, чтобы проверить, находятся ли нужные узлы в автономном режиме, но похоже, что он будет изобретать не в том месте, что уже должно быть функцией.

+0

Я не знаю, существующее функциональные возможности, которые будут делать это, но вы могли бы просто добавить оболочки исполняемого шага, который пытается telnet к порту Slave (22)? – JamesE

ответ

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"); 
Смежные вопросы