이전 회사에서 전 구간 자동화를 설정했었던 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!'
}
}
}
}
}
}
728x90
'Study > Jenkins' 카테고리의 다른 글
Jenkins JSONObject["scm"] is not a JSONObject 에러 해결하기 (0) | 2024.03.20 |
---|---|
Jenkins Pipeline Parallel 실행 하기 (젠킨스 파이프라인 병렬 실행) (0) | 2023.09.08 |
jq를 사용해서 JSON 값 변경하기 (0) | 2023.06.23 |
Jenkins 원격 빌드 하기 - cURL 사용해보기 (3) | 2021.05.20 |
Jenkins Pipeline 스크립트 작성해보기 - Job 일괄 실행하기 (0) | 2021.05.20 |
댓글