어서와, 개발은 처음이지?

배포 프로세스 구성하기4 - slack에서 github, jenkins 알림받기 본문

EC2_Ubuntu_Devops

배포 프로세스 구성하기4 - slack에서 github, jenkins 알림받기

오지고지리고알파고포켓몬고 2020. 7. 3. 19:48
반응형



이번 글에서는 github repository에서 발생하는 이벤트(이슈, pull request 등록, push 등)와 jenkins의 빌드 알람(notification)을 slack에서 받을 수 있도록 하겠습니다.



1. Github App 추가


slack에서 github app을 추가하면 repository에서 발생하는 이벤트를 쉽게 구독할 수 있습니다. 우선 슬랙에서 app 관리 메뉴를 실행해봅니다.

다음으로 검색창에 github을 입력하여 아래 이미지와 같은 Github app을 슬랙에 추가해줍니다.



그러면 Github app과 slack workspace 연결에 관련된 설정화면이 나오는데, 여기서 3가지 옵션을 선택할 수 있고 각 항목은 아래와 같습니다.


- All Public Channels : 모든 퍼블릭 채널에 Github app을 적용합니다.

- Specific Channels : 특정 채널에 Github app을 적용합니다.

- No Channels : 나중에 적용할 채널을 선택합니다.


All Public Channels를 사용하게되면 각 채널에 app이 덕지덕지 붙을 수 있기때문에 이 글에서는 No Channels를 선택하여 알림받을 채널을 생성하여 Github app을 적용하도록 했습니다.

적용이 완료되었다면 슬랙의 Apps 목록에서 Github이 추가된 것을 볼 수 있습니다.


다음으로 github에서 알림을 받을 채널을 생성하도록 합니다.

채널 명은 임의로 작성하면 되고, 저는 github-repo-notification이라고 명명했습니다.

생성이 완료되었다면, 새로 생성된 채널이 Github app을 사용할 수 있도록해주기 위해 Github app의 설정화면으로 이동하겠습니다.

다음으로 Github app을 사용하려는 channel을 등록해주면 해당 채널에서 GIthub app을 사용할 수 있게 됩니다.


2. repository 구독


위 설정이 완료되었다면, 추가한 채널에서 /github 이라는 명령어를 사용할 수 있습니다.


이제 다음과 같은 명령어를 입력하여 repository를 구독하도록 합니다.

/github subscribe username_or_teamname/repository_name

명령어를 제대로 입력했다면 github 계정과 연동하라는 버튼을 생성해줍니다.

버튼을 누르면 아래와 같은 페이지를 볼 수 있습니다.


다음으로 Connect GitHub account 버튼을 눌러서 레포지토리 설정 화면으로 넘어가줍니다. 


여기서도 All Repositories냐, Only select repositories냐에 대한 옵션이 나오는데, All Repositories로 설정한 뒤 특정 채널에서 특정 repository 구독명령을 활성화 하는 방식으로도 사용할 수 있지만 아무래도 폐쇄적인 정책을 펼치는게 좋을 것 같아서 Only select repositories로 진행했습니다.



이제 option 선택을 마치고 Install 버튼을 눌러 설정을 마치면 slack 채널에서 subscribe 메세지를 볼 수 있습니다.

이제 repository에서 이벤트가 발생되면 아래와 같은 형태로 알림을 받을 수 있습니다.



3. Jenkins CI App 추가


다음은 Jenkins 알림을 받기위해 Jenkins App을 설치합니다. 사실 1번에선 app 추가를 별도의 웹창을 띄워서 진행했지만 slack내에서 간편하게 추가할 수 있습니다.


상단 Apps 메뉴에서 jenkins를 검색하여 추가를 진행합니다.

다음으로 jenkins 알림을 수신할 채널을 선택하는 화면을 볼 수 있는데 저는 jenkins-notification이라는 새로운 채널을 생성했습니다.


Add Jenkins CI Integration 버튼을 눌러 설정을 완료해줍니다.



다음 페이지에서는 jenkins에서 slack plugin을 설정하는 방법이 나오는데, 특히 step3은 jenkins에서 plugin 설정 시 필요하므로 token을 잘 기억해둡니다.



4. Slack Notification 설치


slack에서 설정할 것들은 끝났으니 이번에는 jenkins로 돌아옵니다. jenkins에서도 빌드 후 slack으로 알림을 보낼 수 있는 플러그인을 제공하는데 이를 설치하기 위해 플러그인 관리 메뉴로 이동합니다.



다음으로 플러그인 관리 화면의 '설치 가능' 탭에서 slack notification을 검색한 뒤, 체크박스를 활성화 하고 '지금 다운로드하고 재시작 후 설치하기' 버튼을 눌러줍니다.



다음으로 진행상황에 대한 progress를 볼 수 있는 페이지가 표시되는데 jenkins 재시작 체크박스를 활성화하여 설치완료시 재시작하도록 합니다.


간혹 이 단계에서 다음 화면으로 넘어가지 않는 경우가 있는데, 특별히 오류가 난 것이 아니라면 페이지를 새로고침하여 로그인 후 메인화면으로 넘어가시면 됩니다.




5. 빌드 후 조치 추가


이제 마지막 단계로, 알림받기를 원하는 job으로 이동하여 빌드 후 배포 조치로 Slack Notifications를 추가해줍니다. 그리고 slack 채널 정보입력을 위해 '고급' 버튼을 눌러줍니다.



다음으로 slack과의 connection 정보를 설정해야하는데 우선 workspace를 입력해줍니다. workspace와 channel은 다른 개념이니 잘 구분해주시기 바랍니다.



다음으로 3번 항목에서 획득한 token을 사용할 예정인데, Credential 항목에서 인증정보를 추가합니다. 이때, 종류는 Secret text를 사용하여 secret 항목에 token 정보를 입력해줍니다.



이제 마지막으로 channel명을 입력해주고 Test Connection을 확인해준 뒤 변경사항을 저장합니다.



이제 job에서 빌드가 일어나게되면 슬랙에서 알림을 받을 수 있습니다.


6. 마치며


이번 글에서는 github과 jenkins에 대한 이벤트를 slack을 통하여 구독할 수 있는 방법에 대해 알아봤습니다. 위와 같은 방식으로 각 서비스의 repository, 각 서비스의 job마다 별도의 채널을 개설하면 개발 프로세스의 진행상황을 쉽게 확인할 수 있겠습니다.


또한 위 방식에서는 기본 plugin을 사용하였는데, 이벤트를 후킹하여 취향에 맞게 커스터마이즈 한 메세지를 팀원들에게 제공하는 것도 가능합니다. (시간이 되면 다뤄보겠습니다.)


요즘처럼 개발과 운영의 경계가 사라져가는 시점에 간단한 hello world가 될 수 있길 바라며 이번 글은 여기서 마치도록 하겠습니다.








Comments