Jeśli używasz projektu w dowolnym stylu, możesz ustawić, że po 20 minutach kompilacja zostanie przerwana, jeśli nie zostanie zakończona. Jak jest to możliwe w przypadku projektu Jenkins Multi Branch Pipeline?
jenkins
jenkins-pipeline
Devonte
źródło
źródło
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax/
→ Step Reference .def n=Jenkins.instance.getNode("ETService3") if (n!=null && n.computer && n.computer.online) { echo "Online" } else { echo "Offline" // wait a little bit and try again }
Trudnym sposobem jest dwukrotne zdobycie węzła. Pierwszy raz z zewnętrznym limitem czasu, drugi z wewnętrznym limitem czasu. Brakuje mi też tej funkcji.W przypadku potoku deklaratywnego zaleca się użycie kroku limitu czasu w sekcji opcji .
Krok limitu czasu ma 3 parametry, które możesz skonfigurować:
czas (wymagane, int)
aktywność (opcjonalna, boolowska)
jednostka (opcjonalnie, wartości: NANOSECONDS, MICROSECONDS, MILISECONDS, SECONDS, MINUTES, HOURS, DAYS)
Przykłady:
Oficjalna dokumentacja Jenkins ma bardzo ładny przykład dla wykorzystania timeout:
źródło
activity
ma domyślnie false. Kiedyactivity
jest fałszywe - limit czasu dla całego zadania,true
limit czasu dla aktywności (wydrukowanie czegokolwiek do dziennika).timeout
dla danego etapu w taki sposób, aby kolejny etap przebiegał wdzięcznie. W powyższym przykładzie potok jest przerywany po przekroczeniu limitu czasu, a kolejne etapy nie są wykonywane. Czy istnieje sposób, aby spełnić moje wymagania? Przykładowy kod limitu czasu danego etapu (z oficjalnego dokumentu Jenkinsa):pipeline { agent any stages { stage('Example') { options { timeout(time: 1, unit: 'HOURS') } steps { echo 'Hello World' } } } }