2013-09-23 10 views
7

Mam projekt MultiJob (wykonane z wtyczką Jenkins Multijob), z serii etapów MultiJob. Powiedzmy, że jedno z tych zadań nazywa się SubJob01. Zadania, które są budowane, są skonfigurowane z opcją "Ogranicz, w którym ten projekt można uruchomić", aby powiązać go z jednym węzłem. SubJob01 jest związany z Slave01.Czy Jenkins Fail Fast, gdy węzeł jest offline

Chciałbym, aby te zadania szybko zawieść, gdy węzeł jest w trybie offline, zamiast mówić "(pending-slave01 jest w trybie offline)". W szczególności chcę, aby był zapis próby budowania w SubJob01, z kompilacji oznaczony jako nie powiodło się. W ten sposób mogę skonfigurować mój projekt MultiJob, aby obsłużyć sytuację, tak jakbym chciał, zamiast używać wtyczki czasu kompilacji Jenkinsa, aby przerwać całość.

Czy ktoś wie, w jaki sposób można szybko wykonać kompilację, jeśli wszystkie węzły są w trybie offline? Mógłbym przeprojektować projekt MultiJob za pomocą systemowych skryptów Groovy, aby sprawdzić, czy pożądane węzły są w trybie offline, ale wydaje się, że byłoby to ponowne wymyślenie, w niewłaściwym miejscu, co już powinno być funkcją.

+0

nie wiem istniejących funkcjonalności, które będą to robić, ale można po prostu dodać powłoki wykonywalnego krok, który próbuje telnet do portu Slave'a (22)? – JamesE

Odpowiedz

1

Skończyło się na stworzeniu tego rozwiązania, które działa dobrze. Pierwszym krokiem kompilacji SubJob01 jest Wykonanie systemu Groovy skryptu, a to jest skrypt:

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"); 
Powiązane problemy