brunch

You can make anything
by writing

C.S.Lewis

by 번개거북 Nov 20. 2018

JIRA 코멘트 @멘션 잔디 알림

JIRA, 잔디, Zapier 콤비네이션 이야기


1. 이 글은 JIRA와 잔디(Jandi) 메신저를 쓰는 분들을 대상으로 쓰여진 글입니다.

2. 2021.08에 내용을 보완하는 추가 글이 쓰여졌습니다. https://brunch.co.kr/@muyeolhong/16



JIRA라는 훌륭한 툴은 다양한 기능을 제공하고 있는데요, 그럼에도 불구하고 가끔은 나에게 딱 필요한 무언가가 부족할 수 있는 것은 어쩔수가 없습니다. 오늘 소개할 내용은 어쩌면 우리나라에 수십 혹은 수백명 정도밖에 관심이 없을 수 있는 부분이기도 한데요, 그래서 우연찮게 이 글을 읽고 도움을 받을 분들은 거의 없겠지만 제가 오프라인에서 관련 내용을 소개할 때는 유용하게 활용될 수 있을 것 같다는 생각을 가지면서 글을 써봅니다.


처음에 언급했듯이 Jira / 코멘트 / 멘션 / 잔디 등에 대해 익숙하신 분들을 위한 내용이어서 어렵다고 느껴질 수 있는 용어에 대해 별도 설명은 없는 점 양해바랍니다.

이에 더해서 사실상 Zapier를 써본적이 없는 분들에게는 그저 전반적인 흐름과 활용 용도를 위한 팁일 뿐이겠고, 이 글을 보면서 따라하면 같은 결과가 나오게 할만큼 자세하게 쓰지는 않았습니다. 하지만 훌륭한 개발자분들이라면 이 글을 보고 같은 결과를 만들어내는 다른 방법들을 찾는 것이 가능하겠죠? 



JIRA와 잔디를 너무나도 잘 쓰고 있는 어느 조직의 A군. 그런데 JIRA 의 한 이슈에서 길게 진행이 되는 작업에서 문득 B양에게 가볍게 업무 협조 코멘트를 남겨둔다. 무려 @멘션도 남겼다. 하지만 이 사실을 B양은 알지 못하고 몇일이 흘렀는데...

이슈 참조자에 추가를 하거나 했으면 좋으련만 하는 얘기는 이미 지난 얘기. 잔디로 알려줬으면 아마도 놓치지 않고 볼 수 있지 않았을까 하는 얘기를 해본다. 그런데 잔디에서 이런 것이 가능한지 모르겠다.



1. JIRA에서 새로운 코멘트가 등록되는 것을 아는 방법

2. 1번의 이벤트를 받아줄 수 있는 서비스

3. 받은 정보에서 @멘션 정보를 구분할 방법

4. 관련 정보를 잔디로 보낼 방법


체크리스트는 대략 이렇게 정리할 수가 있는데요, 여러가지 방법이 가능하겠지만 한가지 방법을 정해서 설명할 것이고, 실제 구현 부분은 Zapier로 풀어내려고 합니다. 




1. JIRA 관리 기능의 WebHoooks에는 다양한 Events 들을 설정할 수 있는 기능이 있다.

2. Zapier를 활용해보자. 멋진 서버 프로그램을 직접 구현할 능력자들은 이미 이 글을 더 읽을 필요가 없다.

3. Zapier로 끝을 보자. 약간의 프로그래밍 소양이 필요하다. 커피 한잔으로 근처의 프로그래머를 매수하는 것도 방법이다.

4. 3번에 이어서 마찬가지 이야기다. 그리고 공식(?)적으로 처음 언급이 되는 부분으로 생각이 되는데 잔디의 기본 기능에는 없는 알파 버전 기능인 "팀 인커밍 웹훅"을 사용해보자.



1. JIRA 설정

System > WebHooks > Create a WebHook

[ 이벤트 설정 ]

Comment의 created 이벤트를 체크해야 하는 것은 당연하겠죠.

[ URL 설정 ]

URL 설정 아래의 회색 글자들을 클릭하면 값이 추가가 되는데요, URL 뒤에 ?를 붙이고 v={issue.key}와 같은 형태가 되도록 설정합니다.

나중에 나올 내용이지만 Webhook 주소에 더해서 issue key 값을 더해서 전달하도록 합니다.


2. Zapier 구성

Webhook의 Catch Hook을 선택하면 웹훅 리스너가 생깁니다. 해당 기능에서 생성되는 URL을 1번 설명에 있는 관리화면의 URL 부분에 넣어 줍니다.



Zapier에서는 코딩을 지원하는 영역이 있습니다. Python과 Javascript를 지원합니다.

바깥쪽 정보에서 Javascript 안쪽으로 값을 가져와야 하는 영역은 UI에서 Input Data로 정의를 할 수 있고, 마찬가지로 코드 영역에서 다음 단계로 값을 넘기기 위해서는 Zapier에서 정한 규칙대로 변수값을 정의하는 것이 필요합니다.



위에서 제가 활용한 방법에는 두가지 전제가 있습니다.

- JIRA comment의 멘션은 [~ 로 시작하고 ]로 끝난다.

- JIRA 맨션 계정명 뒤에 회사 도메인을 붙인 형태가 잔디 계정과 동일하다.


또 한가지 말씀을 드리면 잘 발생하지 않을 내용이기도 해서 코드 구현시에 넘어간 부분이 있습니다.

코멘트에 여러사람이 @멘션 되는 경우는 별도 처리를 하지 않은 것인데요, 위의 코드는 맨 처음 멘션된 사람의 정보만 전달하게 됩니다. 여러 사람에게 각각 메시지가 가도록 하는 것은 각자의 숙제로...



이 부분은 일반 웹훅 메시징이 아닌 잔디의 특별 기능을 활용해야 하는데요, 잔디(토스랩)에 문의를 하면 아마도 지원을 해주실 것입니다. 저는 이런 저런 사연으로 조금 오래전에 "팀 인커밍 웹훅" 기능에 대한 세팅을 지원받고 활용할 수 있었는데요, 잔디의 일반적인 웹훅 설정 공간이 각 채팅이 이루어지는 토픽방에 매핑이 되는 형태인 것과 다르게 잔디 계정명을 기준으로 메시지를 발송할 수 있는 기능입니다.

기본 동작은 일반 웹훅용 데이터 전송과 같은데요, 다만 email 이라는 필드에 값을 넣고 전송해야 하고, 또한 현재로서는 대상 URL을 잔디(토스랩)에서 설정해주기 전까지는 사용할 수 없는 상태입니다.


현재는 토스랩에 연락해서 URL을 받아야 한다.


메시지 본문에는 아래와 같이 email 값을 추가해야 하는데요, 2번 스텝에서 변수명 키워드로 만든 Result를 선택하시면 됩니다.



자세한 따라하기도 아니면서 꽤나 길고 복잡한 설명이 되었네요. 

어쨌거나 결과적으로 동작이 되는 화면을 마지막으로 보여드립니다.


[ JIRA 코멘트 ]


[ 잔디 화면 ]

코멘트에 있는 이미지는 링크로만...



도움이 되는 사람이 있을 것이라는 소심한 자기 위안을 해보지만 마무리가 뭔가 잘 안되는군요. 한때 암스테르담에서 일하는 꿈(?)을 잠깐 가졌던 것을 뭔가 멋진 추억인냥 떠올리면서 마무리를 해봅니다.


<이미지 출처 : atlassian 홈페이지>


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari