ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Slack에 Github 알림 / Github Actions 연동하기
    Others 2021. 11. 7. 20:40

    1. Github Repository의 알림을 Slack에서 받기

    현재 프로젝트에서 알림받는 정보를 Slack에서 받고 싶다고 하자.

    예시를 위해서 Repository를 새로 생성했다.

    이럴 필요까지 있었을까...?

    Github와 Slack에서 모든 작업을 지원해줘서 매우 쉽게 구성할 수 있을 것 같다.

     

    1-1. Slack App에 Github App 추가하기

    채널에서 Github App을 사용하기 위해서는 추가해주어야 한다.

    사이드 바에서 추가할 수 있다.

    사이드 바에 있는 Apps

     Github를 검색해보면 추가할 수 있는 버튼이 생긴다.

    그러면 새로운 창이 나오는데 Add to Slack 버튼을 클릭해주도록 하자.

    그러면 해당 페이지가 나오는데, 권한에 대해서 물어보는 것이므로 잘 읽고 Allow 해주도록 하자.

    이런 메시지가 나온다면 성공적인 것이다.

     

    1-2. Slack 채널에 Github App 사용하기

    임시로 설정이 되는 것을 확인하기 위해서 채널을 생성하였다.

    오른쪽 위에 채널을 설정할 수 있는 버튼이 있는데 해당 버튼을 클릭해보도록 하자.

    통합 설정에서 앱을 추가할 수 있다.

    앱 추가하는 곳에서 Github App을 추가하도록 한다.

    추가되었다는 메세지가 뜬다면 성공적으로 채널에 추가한 것이다.

    너무 간단하잖아?!

     

    1-3. Github 인증하기

    Github Repository에 접근할 수 있는 사람이 인증을 해야 해당 정보를 가져올 수 있는 그림이다.

    해당 명령어를 입력해보도록 하자.

    그럼 다음과 같은 메세지가 나오는데, 위의 버튼을 통해 Code를 받아 아래에서 입력하면 인증이 완료된다.

    Code를 성공적으로 입력해서 다음과 같은 메세지가 뜨면 완료이다.

     

    1-4. 채널에 Github 알림 추가하기

    다음과 같은 명령어로 알림을 받고싶은 Repository에 대한 값을 입력한다. (자신의 아이디가 레포의 권한이 있어야 한다.)

    Github App을 추가해주어야 한다고 뜨는데 당황하지 않고 버튼을 클릭한다. 

    설정할 수 있는 페이지에서 우리는 하나의 레포에 대해서만 정보를 받을 것이므로 다음과 같이 설정하고 설치한다.

    다음과 같이 뜨면 성공적인 것이다.

    이제 정말 잘 작동하는지 확인하기 위해서 Issue를 열고 닫아보자.

    성공적으로 알림이 오는 것을 확인할 수 있다.

     

    1-5. 어떤 알림을 받을지 설정하기

    기본으로 받는 알림은 다음과 같다.

    • issues - 이슈 생성 및 닫기
    • pulls - 풀 리퀘스트 생성 및 머지
    • statuses - 풀 리퀘스트 상태 변경
    • commits - 디폴트 브랜치에 대한 커밋
    • deployments - 배포 상태 변경
    • public - 프라이빗에서 퍼블릭으로의 리포지터리 공개 상태 변경
    • releases - 릴리즈 생성

    비활성화는 아래와 같은 명령어로 할 수 있다.

    /github unsubscribe [소유자]/[리포지터리] [기능]

     

    기본 알림은 아니지만 활성화 할 수 있는 알림은 다음들이 있다.

    • reviews - 풀 리퀘스트 리뷰
    • comments - 이슈나 풀 리퀘스트에 추가된 새로운 코멘트
    • branches - 브랜치 생성 및 삭제
    • commits:all - 모든 브랜치에 대한 커밋
    • +label:"your label" - 레이블을 사용한 이슈, 풀 리퀘스트, 코멘트 필터링

    활성화는 아래와 같은 명령어로 할 수 있다.

    /github subscribe [소유자]/[리포지터리] [기능]

     

     

    2. Github Actions 결과 Slack 으로 받기

    현재 프로젝트에서 Github Actions로 작업을 수행하는 것이 있고 해당 정보를 Slack에서 받고 싶다고 하자.

    다음과 같은 환경을 비슷하게 구축하기 위해서 빈 레포에 Github Actions를 추가했다.

    Github Actions가 잘 동작하고 있는 Repository

    해당 Action을 Slack으로 알람받을 수 있게 구성해보도록 하자.

     

    2-1. Slack APP

    Slack API를 이용해서 나만의 역할을 하는 Slack APP을 만들어서 작업해야 한다.

    https://api.slack.com/apps 여기로 가서 생성할 수 있다.

    Create an App 클릭!

     

    다음 화면에서는 선택하는 것이 나오는데, 우리는 간단한 작업을 하므로 manifest file 보단 Slack에서 제공하는 UI로 설정해보도록 하자...

    설정하고 싶은 App 이름워크스페이스를 선택해주도록 하자

    꼭 Workspace가 있어야 합니다.

    Create App을 클릭하면 설정을 할 수 있는 페이지가 나오는데 살짝 아래에 나오는 Incoming Webhooks를 선택해보도록 하자.

    Webhooks를 사용하게 되면 슬랙 채널에 정보를 넘길 수 있는 API URL이 생성되는데 우리는 이것을 Github Actions에서 정보를 넘겨줄 매개체로 이용할 것이다.

    클릭 후에 조금의 로딩 후 다음과 같은 화면이 생기는데 토글 버튼을 ON으로 하고 Workspace에 Webhook을 추가한다.

    슬랙 채널에서도 App 추가가 됐다는 메세지가 올라왔다면 성공적으로 추가한 것이다.

     

    2-2. Github Actions 설정

    아까 위에서 언급했듯 Github Actions를 설정하는 곳에서 URL을 통해 채널에 정보를 넘겨줄 수 있다.

    하지만 해당 URL을 코드로서 공개를 해버린다면 누구나 나의 Slack 채널에 정보를 넘겨버릴게 뻔하다..

    (다른 이들은 관심도 없다)

     

    Github Actions를 사용하는 이들은 알겠지만, 민감한 정보는 Secret 정보를 설정해서 사용할 수 있다.

    아까 설정하던 정보 창이 그대로 있다면 그곳에서 작업하도록 하자.

     

    설정하던 정보 창을 닫았다면 다음과 같이 사이드 바의 Basic Information으로 넘어가 Add features and functionality메뉴를 다시 볼 수 있다.

     

    아까 Webhook을 설정하고 나온 창을 봤을 때 URL을 복사할 수 있는 버튼이 있을 것이다.

    일단 복사하도록 하자.

    이제 이 정보를 Github Actions에서 사용할 수 있도록 해야한다.

    Github Repository 페이지로 가서 Secret 정보로 추가해주도록 하자.

    당연히 Name은 자기가 사용하고 싶은 값을 입력하도록 하고 아까 복사한 값을 Value로 설정한다.

    위에서 이미 공개한 URL인데 괜히 가려본다 (Secret은 가려줘야 할 것 같잖아 ㅋㅋ;)

     

     

    2-3. Github Actions 적용

    이제 Github Actions에서 결과 값을 URL을 통해 넘겨주어야 한다.

    넘겨주고 싶은 결과 값을 도출하는 yml 파일에 다음의 코드를 추가해준다.

                # 여기서부터 추가 코드
                - name: send result to slack
                  uses: 8398a7/action-slack@v3
                  with:
                    status: ${{job.status}}
                    fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
                    author_name: testRepo
    
                  env:
                    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # required
                    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required
    • 8398a7/action-slack@v3 서드 파티 액션을 사용할 예정이다.
      관련 정보는 https://github.com/marketplace/actions/action-slack에 있다.
    • env의 GITHUB_TOKEN 값이 필수 설정 값이라고 하는데 secrets.GITHUB_TOKEN이 없어도 동작하더라...
      (private에서도 확인해보아야 함)
    • fields는 슬랙에 전달할 정보들이다.

     

    해당 Action을 마스터 브랜치에 커밋한 후 결과를 살펴보자!

    성공적인 Action!
    정보를 잘 전달했다!

    여러 명이서 작업을 하고 Action 이 잘 되었는지가 궁금해 다들 페이지로 넘어가 구경하곤 했는데, 이젠 Slack에서도 확인할 수 있게 되었다.

     

    참고

     

    Github Actions 달기 (Slack)

     

    gurumee92.github.io

Designed by Tistory.