본문 바로가기
Study/Jenkins

jenkins pipeline 결과 fail일 때 멈추지 않고 실행되도록 처리하기 & fail 이면 멈추기

by Zeromk2 2022. 3. 2.
728x90

이전 회사에서 전 구간 자동화를 설정했었던 jenkins로 지금 회사에서도 전 구간 자동화를 설정했습니다.

앱 다운 -> 기기 설치 된 앱 삭제 -> 다운 받은 앱 설치 -> 자동화 코드 실행

 

그리고 각 단계마다 예외처리를 다르게 설정해줘야 하는 구간이 있습니다.

- 앱 다운 

- 다운 받은 앱 설치

- 자동화 코드 실행

은 해당 파이프라인의 전체 결과와 밀접한 관계를 가지고 있었지만, 기기 설치 된 앱 삭제 부분은 조금 달랐습니다.

해당 파이프라인이 진행될 때 기기에 설치할 앱이 있을수도 있고 없을 수도 있었기 때문이죠.

그래서 해당 부분만 

실패해도 파이프라인 진행은 되지만, 결과는 실패로 찍히도록 처리를 했습니다.

 

try catch 부분에 catch에 catchError 구문을 추가해주시면 되며

해당 건만 실패하고 전체 결과는 성공으로 하고 싶으시다면 

catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE')

이렇게 작성하시면 됩니다.

sh "exit 1" 은 pipeline을 중단 시키는 코드입니다. exit 0으로 하면 중단되지 않습니다.

 

전체적인 코드는 이렇습니다.

pipeline {
    agent none  
    stages 
    {
        stage('fail되어도 실행') 
        {
            steps
            {
                script
                {
                    try
                    {
                        build job: 'jenkins_job_name', parameters: [ string(name: 'parameter_name', value: "${parameter_value}")]
                    } catch (e)
                    {
                        catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE')         
                        {
                            sh "exit 0"
                        }
                        echo 'LEGACY TEST Fail!! But Im Running!'
                    }
                }     
            }
        }
        stage('fail 되면 정지') 
        {
            steps
            {
                script
                {
                    try
                    {
                        build job: 'jenkins_job_name'
                    } catch (e)
                    {
                        catchError(buildResult: 'FAILURE', stageResult: 'FAILURE')         
                        {
                            sh "exit 1"
                        }
                        echo 'LEGACY TEST Fail!! But Im Running!'
                    }
                }     
            }
        }
    }
}

댓글