젠킨스에서 subversion branch merge 자동화하기

aaron.park·2020년 4월 27일
0
post-thumbnail

회사에서 업무상 개발 서버가 필요했기에, 개발 서버에 톰캣과 MySQL을 설치하고, CI환경도 구축하기 위해 젠킨스(Jenkins)를 설치하였다.

문제는 현재 회사에서는 Live에서 사용하고 있는 svn branch와 개발용 branch가 분리되어 있지 않다는 점이었다. 젠킨스에서 바로 live branch를 사용하는 것은 위험하다고 느낀 나는, 개발용 branch를 하나 따로 생성하게 되었다. 그러나 현재까지도 작업은 live branch를 통해 하던 상황. 물론 개발 branch에서 개발해달라고 팀원에게 요청해도 되지만, 이후 변경사항을 merge또는 rebase할 때 히스토리가 없어진다는 점이 걸리게 되었다.

해결책 1

나는 먼저 live branch으로부터 dev branch 쪽으로 merge를 한 후, 커밋 후에 빌드 스크립트를 실행해야겠다고 생각했다. 그래서 본래의 빌드 전에 svn 명령어를 실행하는 스크립트를 추가로 넣어줬다.

svn merge -r3000:HEAD svn://{svn주소}/project/livebranch ./dev/jenkins/workspace/dev_server --reintegrate

이래 놓으니 일단은 잘 되지만.. 약간 야매(?)의 느낌을 지울 수 없었고, 무엇보다 merge후 commit을 하지 않기에 찝찝한 느낌을 지울 수 없었다. (merge이후에 commit 명령어도 있었지만, 빌드 시마다 revision number가 증가해서 안하는게 낫겠다 판단)

해결책 2

혹시 젠킨스 레벨에서 이 부분을 지원하지 않을까 싶어 찾아보니, 역시나 플러그인이 있었다(..).
https://plugins.jenkins.io/svnmerge/

젠킨스 왼쪽 메뉴에서 Jenkins 관리 -> 플러그인 관리 -> 설치 가능에서 svnmerge 검색해준다.

설치 눌러주고, base(live)가 되는 branch가 걸린 프로젝트 구성으로 들어가면 "Accept Integration from Subversion feature branches"라는 체크박스가 생겨있다. 체크.

이전으로 돌아가 프로젝트 메인화면에서 보면 왼쪽에 Feature Branches라는 항목이 하나 생겼다.

들어가 보면 새로운 branch를 생성하여 하위 프로젝트를 생성할 수 있는 폼이 있다. 이미 존재하는 branch 역시 입력 가능(이 경우 에러라고 뜨긴 해도 연결은 시켜준다).

그럼 이렇게 하위 프로젝트가 생성되며, Subversion Merge Tracking으로 기존 프로젝트로부터 추가되어 추적되고 있는 branch임을 알려준다.

이후 빌드 맨 처음에 상위 프로젝트로부터 최신 버전으로 Rebase하도록 하면 끝!

이제 live branch를 수정해도 dev branch에 반영이 된다.
사실 애초에 dev branch를 따로 만들어서 개발을 햇더라면 이런 수고는 안해도 됬을텐데.. 것보다 svn 자체가 좀 불편하다. 조만간 svn에서 git으로 마이그레이션 할 예정. 혼자 해보긴 했는데 여기다 정리 해놔야겠다.

profile
애런 퐉의 블로그

0개의 댓글