나는'm 을 복제하려는 해당 조건 단계에서 Jenkins 를 사용하여 파이프라인 try/을 잡아 주변 위의 단계는 다음 설정 성공에 사용되는 변수를 트리거하는 조건부 단계입니다.
그것은 시도 catch 블록이 갈 방법을 설정,성공 var 성공에는 실패했는가의 일부로 사용할 때 문에서 나중에(의 일부분으로 조건부 단계).
코드가 나를 사용하여 다음과 같습니다:
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"
}
}
}
}
최신 구문 오류가 나는 받는 다음과 같습니다:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup
failed:
WorkflowScript: 4: Expected a stage @ line 4, column 9.
try{
나는've 도 많은 변형이 있습니다.
나는 잘못된 접근 방식을 취하고까요? 이처럼 매우 일반적인 요구 사항입니다.
감사합니다.
이를 해결할 수 있습니다 당신의 문제가 무엇인지에 따라 당신은 가고 있습니다. 단계만 실행하면 위의 단계를 성공하는,그래서 당신은 실제로 두 단계에서 예고할 경우 두 번째 실행을 때 첫 번째가 성공하려는지 확인하는 첫 번째 단계에 실패할 때 적절하게 테스트를 실패합니다. 을 끄는 것을 방지(바)오류입니다. 마지막으로는 유의 실패,또한 아직도 사용할을 잡아 테스트 결과를 얻을 수 있습니다.
그래서 여기에,두 번째 단계만할 때 실행되는 테스트를 통과,그리고 테스트 결과에 관계없이 기록됩니다:
pipeline {
agent any
stages {
stage("Run unit tests"){
steps {
script {
try {
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 ..
'''
} finally {
junit 'nosetests.xml'
}
}
}
}
stage ('Speak') {
steps{
echo "Hello, CONDITIONAL"
}
}
}
}
참고는'm 실제로 사용하여 시에는 선언적인 파이프라인,하지만,다음과 같 StephenKing says할 수 있't 을 사용하려고 직접적으로(당신을 감싸는 임의의 그루비 코드 스크립트에서 단계).