" Park 기술 블로그 "
# 카테고리
# 도구
[Jenkins CI/CD for Android] Multibranch pipeline에서 when 사용할 때
2022-03-13 01:38:46

 최근 Jenkins를 공부하고 적용하고 있었다.

간단하게 Github repo에서 feature branch에서 push event가 발생할 때마다 Unit test나 build에 대해서 자동화하는 것까지는 비교적 수월하게 환경 구축했다. 하지만 내가 구현하고 싶었던 기능은, Github에서 Tag를 qa/* 혹은 release/* 이런 식으로 Push 했을 경우 태그에 맞게 QA 빌드를 Firebase App Distribution에 자동 Deploy하거나 Release 빌드를 triplet을 사용해서 Google Play에 Deploy하고 싶었다.

 

 jenkins의 multibranch pipeline을 사용했고 이 jenkins를 사용할 프로젝트 안에 pipeline 스크립트를 작성했다. 그리고 이 스크립트에 when-expression을 사용해서 태그에 따라서 stage를 분기했다. 그러나 자꾸 테스트 빌드를 하는데 when-expression에 대해서 정상 작동하지 않는 이슈가 생겼다.

 

 이슈에 대한 상황은 대충 이렇다. when { tag "qa/*" } 이렇게 스크립트에 작성했으나 실제 jenkins에서 빌드가 돌아가면 'GitHubBranchHandler have to be explicitly named' 이러한 에러를 뱉고 Failure 된다. 명시적인 이름을 사용해야 한다고 그래서,, 버전이 올라가면서 나름 좋게 변한건가..? 하는 추측이 가장 먼저 들었던 것 같다. 그래서 이에 대한 해결책을 찾아보았는데 when { tag pattern: "^qa/*", comparator: "REGEXP" } 와 같은 식으로 사용하면 될 것 같다고 했다. 그리고 스크립트 수정해서 jenkins에서 빌드 해보면 정말 GitHubBranchHandler 에러를 뱉지는 않았다. 하지만 문제는 qa/~~ 이런 식으로 Tag push를 해도 Release 빌드하는 stage까지 실행되는 것이었다..(정말 이때 when을 인식 못 하는 건가!? 무슨 문제지!? 하며 힘들었다..)

 

 성공은 실패의 어머니, 10번 찍어 안 넘어가는 나무 없다. 될 때까지 고민하고 리서치하고 찾아보니 대부분 저 이슈를 겪는 사람들은 jenkins의 Github Integration Plugin을 설치한 상태였음을 알 수 있었다. 그리고 이 plugin에서 0.1.0-rc29 버전보다 위의 버전을 사용했을 때 에러가 발생했고 0.1.0-rc29 버전으로 downgrade 했을 때 정상 작동함을 알 수 있었다. 그러나 가만히 생각해보니 내가 지금 구축하는 환경에서 Github Integration Plugin이 필요 없었던 것 같았다. 그래서 이 plugin을 제거하니까 정말 아름답게 잘 작동하는 것을 확인할 수 있었다. 다른 Plugin과 Github Integration Plugin이 내부적으로 충돌이 있어서 그런 것 같다고 추측성 글을 본 것 같다.

 

오늘의 결론,

jenkins의 Multibranch pipeline을 사용하면서 GitHubBranchHandler 에러를 마주하게 되거나, when-expression이 작동 안 한다면 Github Integration Plugin을 의심해보자.

 

(추가로 Jenkins에 대해서 환경 구축하고 Android 프로젝트에 대해서 CI/CD 적용하는 과정은 추후에 포스팅할 예정이다.)

6
# 댓글 + 새 댓글 작성
# 새 댓글 작성
댓글 암호는 댓글 삭제 시 필요합니다.
# 님에게 답변 작성
대댓글 암호는 댓글 삭제 시 필요합니다.
# 님의 댓글 삭제
댓글 작성 시 입력했던 암호를 입력해주세요.
쏘세지야채볶음 2022-03-16 21:19:21
와 정말 필요한 내용이였어요ㅜㅜ
2022-03-20 19:14:15   떡볶이
감사합니다 : )
쭈꾸미덮밥 2022-03-16 21:27:58
좋은 정리 감사합니다.
2022-03-20 19:14:40   떡볶이
감사합니다 ㅎㅎ
찌개밥김치볶음밥 2022-03-16 21:33:34
깔끔한 정리 감사합니다.
2022-03-20 19:15:04   떡볶이
감사합니다!