Przebudowuję istniejący potok budowniczy jako potok deklaratywny jenkinsa (potok rozgałęziony) i mam problem z obsługą propagacji budowania.Jak czekać na dane wejściowe użytkownika w Deklaratywnym potoku bez blokowania executora wagi ciężkiej
Po zapakowaniu i przechowywaniu wszystkich odpowiednich plików, potok powinien czekać na dane wejściowe użytkownika, aby uruchomić wdrożenie.
Jeśli tylko dodasz krok wejściowy, bieżący węzeł kompilacji jest zablokowany. Ponieważ ten executor jest dość ciężki, chciałbym przenieść ten krok na bardziej lekką maszynę.
Początkowo wykonywałem pracę jako skryptowy potok i właśnie utworzyłem dwa różne bloki node('label')
. czy istnieje sposób, aby zrobić coś podobnego z deklaratywną składnią?
node('spine') {
stage('builder') {
sh 'mvn clean compile'
stash name: 'artifact', includes: 'target/*.war'
}
}
node('lightweight') {
stage('wait') {
timeout(time:5, unit:'DAYS') {
input message:'Approve deployment?'
}
}
// add deployment stages
}
Próbowałem kilka rzeczy już:
Konfiguracja agenta na najwyższym poziomie i dodanie dodatkowego środka config etapie namnażania, ale potem mam dwa wykonawców blokujące jak najwyższym poziomie zdefiniowany węzeł kompilacji nie jest zatrzymywany.
Ustawienie agent none
na najwyższym poziomie i konfigurowanie agentów na krok. następnie nie ma kasy Git w pierwszym węźle.
EDIT 1
i przekonfigurować mój rurociągu po ciebie radę, to obecnie wygląda następująco:
pipeline {
agent none
tools {
maven 'M3'
}
stages {
stage('Build') {
agent { label 'spine' }
steps {
checkout scm // needed, otherwise the workspace on the first step is empty
sh "mvn clean compile"
}
}
stage('Test') {
agent { label 'spine' }
steps {
sh "mvn verify" // fails because the workspace is empty aggain
junit '**/target/surefire-reports/TEST-*.xml'
}
}
}
}
to kompilacja zakończy się niepowodzeniem, ponieważ obszar roboczy nie przeniesienie między etapami jak nie uruchamiać na tym samym executorze.
EDIT 2
podobno czasami kroki działają na tym samym wykonawca, a czasami nie. (odradzamy budowanie niewolników w naszym klastrze mezos/dcos na żądanie, więc zmiana pośredniej kompilacji executorów byłaby problemem)
Oczekiwano, że jenkins po prostu będzie działał z bieżącym executorem, o ile etykieta w definicji agenta nie będzie zmiana.
to nie działa dla deklaratywnych potoków, nie ma bloku węzłów. – Laures
Uzgodnione. Zaktualizowano odpowiedź. – Bert
Próbowałem tego samego co ty i wpadłem na problem. najwyraźniej obszar roboczy nie przejmuje z jednego etapu na drugi, nawet jeśli działa na tym samym agencie. mój drugi krok kompilacji (maven builds) znajduje pusty obszar roboczy – Laures