본문 바로가기

Gerrit/Gerrit <-> Slack 연동7

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.