>

아래에 언급 된 Jenkins 파이프 라인을 설정하고 있습니다. 1 단계가 실패하면 빌드가 중단되지만 1 단계에서 언급 된 모든 단계와 단계를 1 단계로 실행하고 싶습니다.

pipeline {
agent none
stages {
    stage("build and test the project") {
        agent {
            docker "coolhub/vault:jenkins"
        }
        stages {
           stage("build") {
               steps {
                   sh 'echo "build.sh"'
               }
           }
           stage("test") {
               steps {
                   sh 'echo "test.sh" '
               }
           }
        }
    }
  }
}

1 단계에서 언급 한 모든 단계와 단계를 먼저 실행하고 싶습니다. 결국 스테이지가 실행 된 다음 마침내 Jenkins 작업을 중단하고 실패한 스테이지 및 단계를 표시해야합니다.


  • 답변 # 1

    예, 스크립트에서 try catch 블록을 제외하고는 현재로서는 그렇게 할 수 없습니다. 자세한 내용은 다음을 참조하십시오. 파이프 라인 구축 단계의 실패를 무시하십시오.

    stage('someStage') {
        steps {
            script {
                try {
                    build job: 'system-check-flow'
                } catch (err) {
                    echo err
                }
            }
            echo currentBuild.result
        }
    }
    
    

  • 답변 # 2

    와카 마이 리의 대답에서 무대는 실패한 것으로 표시되지 않습니다. 이제 단계를 실패하고 파이프 라인 실행을 계속하고 빌드 결과를 선택할 수 있습니다.

    pipeline {
        agent any
        stages {
            stage('1') {
                steps {
                    sh 'exit 0'
                }
            }
            stage('2') {
                steps {
                    catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                        sh "exit 1"
                    }
                }
            }
            stage('3') {
                steps {
                    sh 'exit 0'
                }
            }
        }
    }
    
    

    위의 예에서는 모든 단계가 실행되고 파이프 라인은 성공하지만 2 단계는 실패한 것으로 표시됩니다.

    당신이 짐작했듯이, 당신은 자유롭게 buildResult 를 선택할 수 있습니다  그리고 stageResult , 불안정하거나 다른 것을 원할 경우. 빌드에 실패하고 파이프 라인 실행을 계속할 수도 있습니다.

    이것은 상당히 새로운 기능이므로 Jenkins가 최신인지 확인하십시오.

관련 자료

  • 이전 macos - travis ci로 캐시 브루 빌드
  • 다음 javascript - React에서 상태와 소품의 차이점은 무엇입니까?