Próbuję odtworzyć równoważnik warunkowego etapu w potoku Jenkinsa za pomocą próby/catch wokół poprzedniego etapu, który następnie ustawia zmienną sukcesu, która jest używana aby uruchomić etap warunkowy.Rurociąg Jenkinsa - spróbuj złapać konkretny etap i kolejny krok warunkowy
Wygląda na to, że warto spróbować bloku catch catch, ustawiając powodzenie var na SUCCESS lub FAILED, który jest później używany jako część instrukcji when (w ramach fazy warunkowej).
Kod używam jest następująco:
pipeline {
agent any
stages {
try{
stage("Run unit tests"){
steps{
sh '''
# Run unit tests without capturing stdout or logs, generates cobetura reports
cd ./python
nosetests3 --with-xcoverage --nocapture --with-xunit --nologcapture --cover-package=application
cd ..
'''
currentBuild.result = 'SUCCESS'
}
}
} catch(Exception e) {
// Do something with the exception
currentBuild.result = 'SUCCESS'
}
stage ('Speak') {
when {
expression { currentBuild.result == 'SUCCESS' }
}
steps{
echo "Hello, CONDITIONAL"
}
}
}
}
Najnowszy błąd składni Otrzymuję się następująco:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup
failed:
WorkflowScript: 4: Expected a stage @ line 4, column 9.
try{
Próbowałem zostały również wiele odmian.
Czy podejmuję niewłaściwe podejście? Wydaje się to dość powszechnym wymogiem.
Dzięki.
używasz deklaratywnego potoku, to nie pozwala na wykonanie Groovy kodu takiego jak 'try' /' catch'. – StephenKing