본문 바로가기

Gerrit28

1. Gerrit 플러그인 - Gerrit forge 산출물로 적용 게릿은 추가로 필요한 기능들을 각종 플러그인으로 제공한다. 플러그인의 빌드부터 설치까지 자세히 알아보자. 게릿은 다양한 플러그인을 제공한다. 우린 개발자니 소스부터. Gerrit 소스 : gerrit Git repositories - Git at Google - gerrit 전체 소스에 대한 repository 플러그인 소스 : plugins/ - Git at Google - 위의 전체 소스 중에 plugin 에 대한 repository Gerrit CI 빌드 (Gerrit Forge) :Dashboard [Jenkins] - Gerrit 및 게릿플러그인 젠킨스 빌드 게릿에 플러그인 적용은 크게 2가지 방법이 있다. 1. Gerrit CI 빌드 사이트로부터 산출물을 가져와서 적용 2. 직접 소스코드로 플.. 2023. 10. 19.
2. Gerrit 플러그인 - 소스코드 빌드 적용 앞장에서 살펴봤던것처럼 이미 구글 형님들이 잘 빌드해준 산출물을 가져다가 쓰면 베스트지만, 경우에 따라서는 코드를 수정하거나 디버깅을 해야 할때가 있다. 필자의 경우 Gerrit 과 Jira 를 연동시켜야 하는 미션이 있었는데, 여기저기 구글링하고 가이드하고 있는 문서대로 잘 진행했음에도 불구하고 예상한 동작이 안되어서 애를 먹었었다. 결국 셋팅만으로는 한계에 다다르게 되어 디버깅이 필요하게 되었고, 이게 플러그인을 찾아서 빌드하게 된 메인 이유였다. 플러그인 빌드에 대해서 자세히 알아보자. [직접 소스코드로 플러그인 빌드] 1. 소스코드 준비 빌드를 하기 위해서는 당연히 소스코드를 준비해야 한다. 처음에는 플러그인 빌드만 준비하면 되는줄 알았다. 하지만, 여러 시행착오끝에 게릿 풀소스가 필요함을 알게 .. 2023. 10. 19.
3. Gerrit 플러그인 - 게릿에 적용 앞장까지 gerrit plugin 을 빌드하는 방법에 대해 알아보았다. 여기서는 이 빌드된 플러그인을 어떻게 게릿에 적용하는지 알아보자. [게릿에 플러그인 적용하기] 1. 게릿 서비스 중지 $ 게릿설치경로/bin/gerrit.sh stop 2. 플러그인.jar 를 게릿 플러그인 폴더로 복사 게릿의 플러그인 경로는 게릿설치폴더/plugins 다. 여기에 jar 파일 복사하면 된다. $ cp 게릿풀소스root/bazel-bin/plugins/플러그인명/플러그인명.jar 게릿설치폴더/plugins 3. 게릿 서비스 실행 $ 게릿설치경로/bin/gerrit.sh start (혹은 1번 단계를 생략하고 여기에서 restart 해주어도 무방하다) 4. 게릿 웹 페이지 확인 플러그인이 정상 설치 되었다면 게릿 웹 페.. 2023. 10. 19.
4. Review 자동 지정 플러그인 매번 reviewer 를 지정하려면 번거롭다. 물론 로컬 pc 에서 git configuration 을 설정하면 되긴 하지만 ([Git] - Trouble shooting (GIT)), 매번 프로젝트 만들때마다 개인이 설정하는건 고급진 개발자의 모습은 아니다. Gerrit 서버에서 프로젝트를 받을때 바로 설정이 되게 하고 싶었다. 여기저기 뒤져보니 역시 플러그인이 있다. 1. reviewers 플러그인 설치 이제 빌드하고 설치하는건 쉽죠?-> [Gerrit/Gerrit 플러그인] - Gerrit 플러그인 - 소스코드 빌드 적용 2. 리뷰어 지정 근데, 여느 플러그인과 달리 이 플러그인의 Documentation 안에 있는 문서들에는 특별한 설명이 없다. 대부분 config.md 에 관련된 설명이 있어야 .. 2023. 10. 19.
1. Gerrit <-> Slack 연동 코드 리뷰를 올리게 되면 리뷰어들에게 메일이 가지만, 게릿에서 보내는 메일이 많다보니 대부분의 개발자들에게 게릿은 스팸 혹은 별도 처리가 되어 있다. 따라서 리뷰가 등록되어도 실시간으로 리뷰어들이 알아차리기 힘들다. 이에 Slack 에 리뷰요청채널을 파서 여기에 리뷰 URL 을 post 하기로 했다. 하지만 이를 수동으로 매번 해야 하는 번거로움은 기본적인 개발자 MBTI 와 맞지 않았고 이에 대한 원성이 잦았다. 이에 아래처럼 개선하고 싶었다. As-Is : 개발자가 커밋 push → jenkins 빌드 대기 → 빌드 완료 후 수동으로 slack 리뷰요청 채널에 메시지 기입 To-Be : 개발자가 커밋 push → jenkins 빌드 대기 → jenkins 그 verified+1 점을 주면 자동으로 s.. 2023. 10. 18.
2. 생각의 흐름 접근 방법 찬주임이 아이디어를 줬다. “AriGerrit 이 Verified 1점 주면 바로 슬랙에 업데이트 되게 해주세요~” 썅……… 지가 하지 맨날 나 시켜. 여튼... 듣자마자 내 머리속에는 꼬리에 꼬리를 무는 물음표만이 난무했다. ‘AriGerrit이 Verified 1점 주는걸 어떻게 알지?' ‘어느 시점에 알 수 있어야 되는 거지?' ‘알았다고 치더라도… 슬랙에 원하는 채널에 어떻게 포스팅을 하지?’ ‘포스팅 메시지에 커밋 메시지는 어떻게 싣지?’ ‘포스팅 메시지에 리뷰 주소는 어떻게 hyperlink 시키지?’ …… 진정하고, 하나씩 생각해보자. 이걸 하기 위해서는 작게는 뭐뭐를 할수 있어야 될까…? 1. 슬랙 외부에서 슬랙의 특정 채널에 포스팅을 할 수 있어야 한다. 2. 게릿에서 슬랙에 .. 2023. 10. 18.
3. 슬랙 채널에 포스팅 하기 앞에서 생각의 흐름을 다시 한번 상기시켜 보자. 순서를 바꿔 3번부터 확인해봤다. 포스팅부터 할 줄 알아야 그 다음이 의미가 있을거 같아서였다. 구글링을 하니 꽤 나왔다. 그 중에서도 아래 블로그가 경험치에서 나온 빡침의 설명인것 같아 주요하게 참조했다. (웹훅 담당자가 퇴사한듯 ㅋㅋ) Slack Incoming Webhook 2가지 방법 두괄식으로 결론부터 설명하면 전체적인 그림은 아래와 같다. Incoming webhook 이라는 녀석을 통해서 slack 에 메시지를 포스팅을 할수가 있음을 알아냈다. 차근히 자세히 들여다 보자. 1. Incoming Webhook Slack이 정한 포맷에 맞게 데이터를 보내면, 지정된 채널에 메시지를 포스팅해주는 기능이다. 슬랙은 이를 app 이라고 표현한다. (슬랙.. 2023. 10. 18.
4. 게릿 리뷰 웹훅 (1/3) 이제는 1번에 대해 알아볼 차례다. 정확히 필요한것은 개발자가 게릿에 리뷰를 등록해서 Jenkins 빌드가 성공적으로 이루어진 직후 를 캐치해야 한다. Jenkins 형님은 게릿에 리뷰가 올라오면 자동으로 트리거 돼서 소스코드를 가져가서 빌드를 시작하고 이를 게릿에 커멘트를 적어서 알려준다. 그리고 빌드, 테스트 에러가 없으면 성공했다고 또 커멘트를 적어서 게릿에 알려준다. 이렇게 성공했다는 커멘트 적을때를 캐치할 수만 있다면…? 찾아보자. 게릿을 셋업하면서 느낀건, 이상하게 게릿은 구글링이 많지가 않다. 나오는 정보들도 대부분 도움이 되지 않았다. 정확히 타겟팅을 하지 않고서는 시작하는게 굉장히 불리했다. 이럴땐 역시 요즘 대세인 우리 챗GPT 형님이 최고다. 챗형님한테 물어봤다. 오호랏 !!!!!!!.. 2023. 10. 18.
5. 게릿 리뷰 웹훅 (2/3) comment-added.sh 파일 작성에 대해 조금 더 자세히 살펴보자. 이 쉘 스크립트가 해야 할 일은 크게 3가지다. 1. 슬랙에 포스트 해야하는 조건을 만들고 2. 메시지를 만들어서 3. 슬랙에 post 를 날려야 한다. 1. 포스트 조건 조건은 일관되게 젠킨스 빌드가 성공한 상황이다. 이 상황은 verified+1 커멘트가 달린것과 이 커멘트의 주인의 조합으로 완성 가능하다. Verified+1 은 대충 알아낸것 같다. 모든 커멘트가 달릴때마다 comment-added hook 이 트리거 되는데, 이때 아래 커멘트만 적당히 조건을 걸어주면 될것같다. comment : Patch Set 1: Verified+1 Build Successful http://jenkins.aribio.net/job/B.. 2023. 10. 18.
6. 게릿 리뷰 웹훅 (3/3) 이제 포스트 메시지를 이쁘게 채워야 할 차례다. 기본 포맷은 아래처럼 했다. 리뷰 owner 리뷰 주소 커밋 메시지 그러면 이렇게 나온다. 뭐... 나름... 뭐... 하지만 다시봐도, 정말 개발자 스럽다. 이것 자체도 안이쁘지만, 문제는 여러개 겹치면 아래처럼 된다. 안이쁨을 넘어서 알아보기조차 어려워졌다. 이래서는 안될것 같았다. (흔히 말하는 가독성이 너무 떨어진다) 방법이 있을꺼야. 슬랙을 뒤져보았다. 그래.. 없을리가 없다. ↗ An overview of message composition 여기에서 슬랙 메시지에 대한 전반적인것을 알 수 있다. 그리고 그 밑에 바로 내가 원하는 예쁜 메시지 포맷을 위한 가이드가 친절하게 있다. ↗ Rich message layout 여기에 더 고급 기능도 있었다.. 2023. 10. 18.
7. Hook 할때 커밋 메시지 가져오기 이제 마지막이다. 여기까지 왔으면 거의 다 온거다 ^^ 앞에 포함된 내용이지만 이 부분은 따로 떼서 설명할 필요가 있다. (comment-added.sh 에 이미 코딩된 내용) 슬랙에 포스팅할때 커밋 메세지를 함께 넣어줘야 한다. 그런데 이 커밋 메세지를 가져오는게 생각보다 쉽지 않았다. 그 과정을 살펴보자. 우선 우리가 작성한 hook 은 comment-added 다. 이 hook 은 comment 가 add 될때 트리거 되기때문에 거기에 해당하는 정보들만 있다. 공식적으로 이 hook 에서 알수 있는 정보들은 아래와 같다. https://gerrit.googlesource.com/plugins/hooks/+/refs/heads/master/src/main/resources/Documentation/h.. 2023. 10. 18.
1. Gerrit <-> Jenkins 연동 ** Jenkins 가 무엇이고 , 왜 필요하고, 왜 게릿과 연동해야 되는지는 젠킨스 페이지([젠킨스 (Jenkins)] - Jenkins 란?)에서 자세히 다뤄보겠다. 여기서는 게릿,젠킨스를 다 안다고 가정한다. ** 게릿 코드리뷰에 Jenkins 가 더해진 workflow 는 아래와 같다. 코드 리뷰 과정에서 CI/CD 를 통한 코드의 안정성 확보는 필수다. (사실 이 부분때문에 AriServer 를 구축하게 되었다) 이 장에서는 Jenkins 에서 Gerrit review 에 올라온 수정사항을 빌드해서 해당 리뷰에 Verified+1/-1 점을 주는 과정에 대해서 자세히 알아보자. 이 페이지의 처음부터 끝까지 가슴에 새겨야할 한 문장이 있다. ***Jenkins 는 Gerrit 입장에서는 또다른 개.. 2023. 10. 17.