1. Jenkins 다운로드
- http://jenkins-ci.org/ 가자마자 download war 버튼이 있다.
2. Jenkins 설치
- 설치랄게 별로 없고, tomcat의 webapps에 넣어주면 바로 접근이 가능해짐.
- jetty가 내장되어 있기 때문에, 명령어만으로 바로 띄울 수도 있는 것 같지만, 플러그인 목록이 가끔 안보이는 문제 등 불안정한듯.. yum repo등록 시 설치하는 방법도 마찬가지..
- 그래서 톰캣에 올리는 것을 추천한다.
3. Jenkins 세팅
- 플러그인 먼저 설치해준다. (Jenkins관리 - 플러그인 관리)
- Git Plugin, Gerrit Trigger Plugin을 설치한다. (재시작 없이 설치하기를 권장)
(그냥 Gerrit Plugin이 있는데 Gerrit Trigger Plugin의 예전 버전이며, deprecated 된 플러그인이라고 한다. 실제로 오류를 뿜음)
- Jenkins관리 - 시스템 설정에 가서 SCM (여기서는 git), Maven, Jdk에 대한 설정을 해준다.
4. Gerrit Trigger Plugin 설정 (Jenkins관리 - Gerrit Trigger)
- 좌측의 Add New Server버튼을 눌러서, Gerrit Server를 등록해준다.
- 아래와 같은 화면이 나오는데, 회사 정보는 삭제하였다.
- Frontend URL에 1번 포스팅에서 proxy설정을 마친, apache url을 입력해준다.
- username, email은 jenkins전용 계정을 생성해서 등록하는 것을 추천한다. (Gerrit의 Verify Label에 찍히게 될 계정이다)
- 모두 입력 후, Test Connection을 눌러서 제대로 연결이 되는지 확인한다.
5. Item 추가 (구버전에서는 Job이라고 불렀었다.)
- 좌측 상단의 새로운 Item버튼을 누르고, 내가 Maven을 주로 사용하므로 이름을 대충 지어주고, Maven Project를 선택한다.
6. Item Configuration
- 소스코드 관리 항목에서 git 부분에 gerrit에 생성되어 있는 repo의 ssh 경로를 적어준다.
- credential도 gerrit에서의 인증정보와 동일하게 설정 해준다.
- 빌드유발 항목에 보면, gerrit event항목을 볼 수 있는데, Gerrit에서 특정 이벤트(Trigger On에서 지정한)가 발생하면 이 Item을 실행하도록 설정이 가능하다.
- 다른 항목은 각자 프로젝트 환경에 맞게 설정하고, Trigger on항목은 Patchset Created로 지정하여, 바로 테스트를 진행해보자.
- 저장하고, 일부로 PatchSet을 생성해서 하나 올려보도록 하자.
- 설정이 완료된, Item을 실행시킨다.
- Gerrit의 Verified Label에 verify 점수가 등록되어 있으면 성공!
7. Item Detail Configuration
- 6번과 같이 설정하는 경우 잘되는것처럼 보이지만, 새로 생성된 patchset에 대해서 빌드를 수행하지 않고,
기존에 올라가있는 소스에 대한 빌드를 수행한다.
- 이럴 경우, 소스코드 관리 항목에서 고급을 눌러서 Refspec에 origin/$GERRIT_REFSPEC 라고 입력해주고,
Branches to build에는 $GERRIT_BRANCH라고 입력해준다.
- Additional Behaviours에서도 Strategy for choosing what to build항목에서 Gerrit Trigger를 명시해주어야 한다.
- 이렇게 하면, 올라간 Patchset에 대해서 빌드를 해준다..
- 저렇게 환경변수로 지정을 해두면, Trigger돌면서 환경변수에 해당하는 것을 알아서 찾아서 돌려준다.
- 추가로, Additional Behaviours에서 Wipe out repository & force clone을 추가 해준다. (이게 없으면 전에껄 clone해옴)
8. 7번 문제에 대한 해결
- Gerrit Trigger가 2.12.0으로 업데이트가 되었음.
- Gerrit Trigger Configuration에 Build Current Patches Only 이런 옵션이 생겼다!!
- 정말 가장 최근 PatchSet 찾아서 잘 verify한다..
- 그리고 가장 중요한... 아래 화면... (좌측은 Plain으로 설정해서 Repository명 써야하고, 오른쪽 Branches는 Path로 바꾸어 주어야 **이 먹는다.. (이거 가지고 이틀 삽질함;;;)
- 참고로, 수동으로 돌리려면 Item자체를 실행하는 것이 아니라, Query and Trigger Gerrit Patches 메뉴에서 실행해주어야 한다.
(그래야 현재 Open되어 있는, PatchSet, Branch에 대해서 제대로 찾는 것 같다.)
이후 세부 설정 및 복잡한 처리 프로세스에 대해서는 더 연구가 필요하며,
정리되는대로 하나씩 올려나갈 예정이다.
'개발 > Jenkins' 카테고리의 다른 글
[Gerrit + Jenkins] Phase1 (Gerrit 설치 및 설정) (0) | 2016.06.11 |
---|---|
[Jenkins] Nexus로 Maven프로젝트 배포시 401에러 해결 (0) | 2016.06.11 |
[Jenkins] Maven Project를 Tomcat으로 원격배포하기 (0) | 2016.06.11 |
[Jenkins] Maven Project 빌드 시 pom.xml이 갱신되지 않는 경우 (2) | 2016.06.11 |
[Gerrit-Trigger] has no capability to connect to Gerrit event stream (0) | 2016.06.11 |