[DevOps] GitLab과 Slack 연동 Develop Tip

최근에 DevOps로 전향하고자 노력을 하고 있습니다만,
내제화되어 있지 않고 기존의 방법을 전향한다면 어려움이 많이 있을 수 있습니다.
특히나 개발 문화는 개개인들의 업무 프로세스하고도 연관되기 때문에
그런 것을 바꾸기란 습관을 바꾸는 것 만큼이나 쉽지 않습니다.

암튼 최근에 Phabricator, Redmine, JIRA 등등의 버전관리 및 이슈, 
 프로젝트 관리 등에 무엇을 사용할까 고민하다가 GitLab (Community Edition)을
사용하기로 하였습니다.

그동안 사용해 왔던 Mantis 등을 고려해 볼 때 장단점 등이 있을 수 있으나
GitHub 등의 지속적인 성장 및 메인으로 인한 (그동안 SourceForge, 코드그루 등등
이 두각을 나타냈다가 사라지거나 사라저가고 있네요) 개발자들의 지원 등을
고려해 볼때 GitHub의 대안으로서 GitLab 이 사용하면 할 수록 아주 편한 느낌을 주었습니다.
특히나 Milestone을 스프린트로 이용하여 이슈관리를 하고 git 과의 연동등등
잘 이용하면 좋을 듯 합니다.

또 하나의 큰 개발 축으로 개발자들의 협업 도구 중 하나라 할 수 있는
Slack이라는 채팅 툴의 이용입니다.
채팅은 TCP/IP 가 있을 당시부터 IRC 라는 인터넷 릴레이 챗팅이라는 
프로토콜과 CS 앱 및 그동안 수없이 많은 채팅 프로그램 및 앱 등이 있었는데요,
프로그래머가 사용하기에 아주 좋은 것이 바로 Slack 이라고 들어왔습니다.
(시작할 때 들은게 아마도 2012년 쯤으로 기억합니다)
그런데 처음 이용하기에는 이거 뭐 카카오톡이나 텔레그램 등등과 틀릴 게 뭐 있지?
했는데 더 중요한 것은 외부 시스템 들간의 연동이 정말로
막강함을 느꼈습니다.

이번 포스팅은 그 첫번째 것으로 Slack에 특정 채팅 방 (채널)을 만들고
깃랩에서 수정되거나 변경되는 등의 이벤트가 발생할 때마다 
해당 슬랙 채널에 자동으로 관련 메시지가 뜨게 하는 방법입니다.

CD (Continuous Development), CI (Continuous Integration) 이후 DevOps (Development & Operation)
개념에서 더 강조되는 것이 바로 이런 작업과 작업 사이를 어떻게 매끄럽게 유기적으로
연동되어 돌아가는가 인데 그 관점에서 봐 주셨으면 합니다.

GitLab은 ​Ubuntu 16.04에 apt-get 으로 설치한 gitlab-ce 패키지로 버전은 8.13.3-ce.0 입니다.

또한 Slack은 10명 정도로 돌릴 수 있는 공짜 버전을 이용하였습니다.


1) Slack에서 외부 연동을 위한 web-hook 주소 만들기


위와 같이 자신의 slack 팀에서 Browse apps > Custom Integrations > Incoming WebHooks > New configuration 으로 들어오면 됩니다. (어디로 가야할지 한참을 찾았습니다.)

이미 private 한 채널로 만들어 놓은 "_gitlab_notice_" 를 선택하고 "Add Incoming WebHooks integration"을 누릅니다.



그러면 나오는 "Webhook URL" 을 저장해 둡니다. 
이 Webhook 은 말하자면 RESTful API와 유사한 WebService URL로 보시면 됩니다.
이 주소를 이용하여 GitLab에서 연동을 할 겁니다.
(외부로 유출되면 안되겠네요... ^^)


2) GitLab에서 Slack용 WebHook 설정


왼쪽에 프로젝트를 선택하고 우상의 설정을 눌러 WebHook을 들어가서...

설정을 하면 되는 줄 알았으나....
이렇게 하면 안됩니다. (JenKins 등을 연결할 때 이 방법으로...)


그래서 찾아보니,

프로젝트 > 설정 > Services 로 들어가서 보니...

이미 Slack 연동 준비가 다 되어 있더군요... (저는 26년차 늦깍이 개발자였습니다... T.T)

그래서 Slack 을 누르고

제일 아래 Webhook 주소에 위에 Slack에서 저장해둔 URI 주소를 넣어줍니다.
(개별 채널로 가는 것 처럼 보이는데 일단 _gitlab_notice_ 라는 채널로 다 모았습니다)

이렇게 해서 저장을 해 놓으면,

슬랙에서 멋지게 gitlab 이벤트가 자동으로 오는 것을 알 수 있었습니다.


어느 분께는 도움이 되셨기를...



덧글

  • dakarship 2016/12/07 01:01 # 삭제 답글

    git을 접한지 얼마안되어 아직도 절절이 헤매고 있는 초보개발자 입니다.
    이슈트랙커로는 아틀라시안에서 서비스하는 것 만 알고 있었는 데, 생각외로 많군요,
    개발 관련 툴?들에대한 자세한 소개글 감사합니다, 배울게 참으로 많네요 ㅡ.ㅡ
  • 지훈현서아빠 2016/12/07 09:24 #

    도움이 되셨다니 저의 보람입니다. ^^
  • 이행선 2016/12/09 00:20 # 삭제 답글

    잘 읽었습니다.
  • 지훈현서아빠 2016/12/09 09:42 #

    실제로 남의 것을 따라해보고 아하 그렇구나...
    하고 감을 잡기는 쉽습니다.
    하지만 이렇게 정리를 해 놓지 않으면 그런 지식은
    그냥 인터넷에 있는 지식일 뿐입니다.
    정리의 중요성을 하면 할 수록 느끼게 되더라구요.
    도움이 되셨다니 저의 보람입니다. ^^
  • 태양새 2018/08/11 12:06 # 삭제 답글

    고맙습니다.
    잘보고갑니다.
    제가 만든 사이트입니다.
    조언을 부탁트리며 도메인을 남깁니다.
    오랫동안 작업하다
    마지막으로 정리하여 오픈했습니다.
    성공할 수 있을지 진심어린자문 부탁드립니다.
  • 태양새 2018/08/11 12:08 # 삭제 답글

    http://urllinkcoin.com
    도메인이 안나타나 새로 메모합니다.
댓글 입력 영역

구글애드텍스트