** Jenkins 가 무엇이고 , 왜 필요하고, 왜 게릿과 연동해야 되는지는 젠킨스 페이지([젠킨스 (Jenkins)] - Jenkins 란?)에서 자세히 다뤄보겠다.
여기서는 게릿,젠킨스를 다 안다고 가정한다. **
게릿 코드리뷰에 Jenkins 가 더해진 workflow 는 아래와 같다.
코드 리뷰 과정에서 CI/CD 를 통한 코드의 안정성 확보는 필수다.
(사실 이 부분때문에 AriServer 를 구축하게 되었다)
이 장에서는 Jenkins 에서 Gerrit review 에 올라온 수정사항을 빌드해서 해당 리뷰에 Verified+1/-1 점을 주는 과정에 대해서 자세히 알아보자.
이 페이지의 처음부터 끝까지 가슴에 새겨야할 한 문장이 있다.
***Jenkins 는 Gerrit 입장에서는 또다른 개발자 *** 라는것을 계속 가슴에 새겨야 한다.
Jenkins 라는 개발자는 Gerrit 에 다른 개발자가 수정사항을 올리면, 이에 대한 알림을 받게되고, 수정사항이 포함된 전체 소스코드를 Gerrit 으로부터 다운로드 해서 빌드 및 테스트를 수행하고 Gerrit 에 결과를 comment 하는게 주업이다.
여기서는 아래처럼 게릿 리뷰 페이지에 젠킨스가 자동으로 Verified 커멘트를 남기는것이 목표다.
Jenkins 쪽 작업
1. 플러그인 설치
설치한 젠킨스 접속(http://jenkins.xxxxx.net) → Jenkins 관리 → Plugins
Available plugins → gerrit 검색
- Gerrit Trigger : 필수 - 게릿에 변경이 발생할 때 패치셋을 가져와서 빌드하고 결과에 따라 게릿에 점수를 남긴다.
- Gerrit Code Review plugin : Optional - Gerrit trigger 보다 조금 더 확장 기능을 제공하는데 딱히 필요하진 않다.
2. Gerrit trigger 설정
설치한 젠킨스 접속(http://jenkins.xxxxx.net)→ Jenkins 관리 → 페이지 제일 아래쪽에 Gerrit Trigger 클릭
좌측의 + Add New Server
알맞은 이름으로 CREATE (처음 셋업하는것이니까 그냥 default configuration 으로 진행)
설정 페이지에서 나머지 채우자.
① Host name : gerrit server의 호스트 name - review.xxxxx.net
② Frontend URL : gerrit web 주소 - http://review.xxxxx.net
③ SSH Port : gerrit server 의 ssh port - 디폴트는 29418 (gerrit.config 파일에 있다)
④ Username : Jenkins 가 접근할 계정 id - AriJenkins (우리는 AriJenkins 로 접근)
⑤ E-mail : 위 user 에 해당하는 메일 주소 (달라도 상관없다)
⑥ SSH Keyfile : jenkins 의 ssh private key - gerrit 에는 public key 를 등록하고 private key 를 통해서 인증 진행
정보를 다 채운후 우하단의 [Test Connection] 버튼으로 정상 접속 여부 확인
문제가 없으면 Success 라고 뜬다.
문제가 생길 경우 Failed 라고 뜬다. 이 경우 원인을 찾아서 올바른 정보를 넣어주어야 한다.
이제 Gerrit Trigger 메인 화면으로 나오면 위에서 설정한 서버가 등록되어있고 , 문제가 없을경우 Status 에 파란불이 들어온다.
문제가 있을경우 Status 는 빨간 신호등으로 바뀐다.
빨간 신호등 옆에 설정(톱니바퀴) 아이콘을 클릭하면 위에 설정 페이지로 진입하게되고 거기서 디버깅을 하면 된다.
설정 페이지에는 상태에 따라 점수를 어떻게 줄지를 설정할 수 있다.
대부분 건드릴 필요가 없다. 그냥 놔둬라.
Gerrit 쪽 작업
1. Gerrit 에 Jenkins SSH key 등록
위에서 Jenkins는 Gerrit 입장에선 또다른 개발자라고 했다. 개발자가 Gerrit 에 접근하려면?
제일 먼저 할일은 자기 SSH key 를 gerrit 에 등록하는 일이다. 그래야 코드를 댕길수 있으니까.
- Jenkins home directory 로 이동 (우리는 /var/lib/jenkins)
- ssh key 생성
- id_rsa.pub 키를 게릿에 등록
2. 권한 설정
서두에서도 설명했지만 Gerrit 입장에서 Jenkins 는 또다른 개발자다.
이 개발자는 Service Users 라는 특별한 그룹에 속해있다. 이 Service Users 그룹이 일을 할 수 있도록 권한을 부여 해야 한다.
Gerrit 버전 3.2 까지는 Non-Interative User 라는 그룹이었다. 이게 3.3 부터 Service users 라는 그룹으로 바뀌었다.
1) Stream events 권한 허용
젠킨스 형님이 게릿 서버와 통신하기 위해서 (정확히는 게릿에 반영되는 수정사항에 대해 trigger event 를 받기 위해서) 필요한 권한
게릿 접속 (http://review.xxxxx.net) → AriGerrit 으로 로그인 (관리자) → BROWSE → Repositories → All-Projects
Access → EDIT (페이지 맨 밑에 있다)
Global Capabilities 에 Stream Events 항목에 Service Users 그룹을 ALLOW 로 추가해준다.
젠킨스 형님이 게릿에서 활동하는 유저 그룹은 Service Users 다.
2) refs/* 에 READ 권한 추가
젠킨스 형님이 소스코드를 fetch 하기 위해 필요한 권한.
소스코드를 가져가서 빌드하려면 refs/* 에 READ 권한이 있어야 한다.
refs/* 레퍼런스를 Jenkins 가 read 할 수 있도록 Service Users 를 ALLOW 로 추가
3) Verified 에 점수를 줄수 있도록 권한 추가
젠킨스 형님이 커멘트를 남기기 위해 필요한 권한.
커멘트를 남기는 reference 는 refs/head 다.
여기에 Lavel Verified 항목에 Service users 를 추가해준다.
이제 Gerrit 과 Jenkins 연동 작업이 모두 끝났다 !!!
글 도입부에 소개한 게릿에 젠킨스가 커멘트를 남기려면 아직 한 단계를 더 해야 한다.
내용이 너무 길어지고 젠킨스 프로젝트 생성에 관한 이야기이니
젠킨스쪽 페이지 만들때 (여기는 게릿 관련 페이지다) 다시 정리하고 업데이트 하겠다.
([젠킨스 (Jenkins)] - Jenkins 에서 Gerrit 프로젝트 빌드하기)
이번장에서는 Gerrit 과 Jenkins 를 연동하는 방법에 대해 자세히 다뤘다.
잊지말자!!!
Gerrit 입장에서 Jenkins 는 개발자라는 것을!!
'Gerrit > Gerrit 과 외부 Tool 연동' 카테고리의 다른 글
2. Gerrit <-> Jira 연동 (0) | 2023.10.17 |
---|---|
3. Jira 에서 Gerrit 연동 (0) | 2023.10.17 |
4. Gerrit 에서 Jira 연동 1/3 - Jira API 토큰 발급 (0) | 2023.10.17 |
5. Gerrit 에서 Jira 연동 2/3 - Jira configuration 셋업 (1) | 2023.10.17 |
6. Gerrit 에서 Jira 연동 3/3 - Gerrit 커밋 메시지에 Jira 이슈 hyperlink 시키기 (1) | 2023.10.17 |