Github actions와 slack 연동해서 알림받기
Action-Slack
Github actions를 이용하여 빌드 결과를 알림으로 받을 수 있다.
텔레그램이나 Slack등 다양한 방식으로 알림을 받을 수 있다.
그 중 업무적으로 가장 많이 사용하는 메신저인 Slack과 연동하여 빌드 결과를 알림받을 수 있도록 해보겠다.
Action-Slack 을 이용하여 손쉽게 연동할 수 있다. 공식 사이트에 들어가면 usage나 fields를 확인할 수 있다.
Slack webhook url 발급
먼저 Slack api에 들어가서 create new app
을 누르고, 본인이 원하는 App Name
, development slack workspace
를 선택해서 새로운 앱을 만들어준다.
그러면 위와 같은 페이지가 나온다.
이 중 Incoming Webhooks
를 클릭하여 활성화시킨다. 그 후 Add New Webhook to workspace
를 클릭하여 slack에 내가 원하는 채널과 연동시킨다.
Allow
를 클릭하면 Webhook URL
이 발급되는데 이 값을 Github의 secrets에 환경변수로 추가할 것이다.
Github 환경변수 추가
깃허브 프로젝트의 Settings
/secret
탭으로 가서 오른쪽 상단에 New repository secret
를 클릭하여 환경변수를 추가한다.
Name
에는 SLACK_WEBHOOK_URL(또는 원하는 환경변수 이름)을 넣고 Value
에 아까 복사한 Webhook URL
값을 넣은 후 환경변수를 추가한다.
yml 파일 작성
방법 1: 경로에 yml파일 직접 작성
이제 workflow를 만들기 위해 yml파일을 작성할 것이다.
yml파일의 경로는 .github/workflows/
아래에 (원하는 이름).yml
이라는 이름의 파일을 작성하면 된다.
방법 2: Actions
탭으로 이동 후 작성
다른 방법으로는 프로젝트 탭 중 Actions
탭을 선택한 후 new workflow
버튼을 클릭하면 아래와 같은 화면이 나온다.
여기서 set up a workflow yourself ->
링크를 클릭한다.
그럼 위와 같이 yml파일을 작성할 수 있는데 마찬가지로 (원하는 이름).yml
을 입력 후 에디터에 yml파일 내용을 작성하면 된다.
파일 작성
name: Slack alert for dev branch
on:
push:
branches:
- dev
- feature/*
pull_request:
branches:
- dev
- feature/*
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
author_name: Sloth Backend - dev
fields: repo,commit,message,author # action,eventName,ref,workflow,job,took 추가할 수 있음
mention: here
if_mention: failure,cancelled
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required
if: always() # Pick up events even if the job fails or is canceled.
위와 같이 파일의 내용을 작성해주면 되는데 대략적인 내용을 살펴보면 다음과 같다.
먼저 이 workflow의 이름을 가장 상단에 적어준다.
on:
push:
branches:
- dev
- feature/*
pull_request:
branches:
- dev
- feature/*
on
아래에는 어떤 동작이 어느 브랜치에서 발생했을 때 이 workflow가 실행될 지 설정해준다. 위의 예시의 경우 dev브랜치와 feature 아래에 있는 브랜치에서 push, pull_request가 발생했을 때 실행되도록 하고 있다.
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
author_name: Sloth Backend - dev
fields: repo,commit,message,author # action,eventName,ref,workflow,job,took 추가할 수 있음
mention: here
if_mention: failure,cancelled
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required
if: always() # Pick up events even if the job fails or is canceled.
jobs
에는 실제 동작할 명령들을 적는다.
- workflow는 여러개의 Job으로 구성된다.
- 여러 job이 있을 경우, 병렬 실행을 기본으로 한다.
- 위 파일은
build
라는 job을 생성하고, 그 아래에는 2개의 step이 존재한다. runs-on
은 어떤 OS에서 실행될지 지정한다.- step의
uses
는 다른 사람이 이미 만들어 놓은 action을 사용할 때 지정한다. 위의 경우 8398a7/action-slack을 사용한다.- Action-slack 공식 사이트에서 사용할 수 있는 fields의 설명이나 파라미터들을 볼 수 있다.
실행
설정을 마치고 지정한 브랜치에서 지정한 액션이 일어났을 때 위와 같이 자동으로 actions가 실행된다.
slack에 내가 지정한 채널로 들어가보면 내가 선택한 field 옵션의 정보들에 대한 알림이 오는 것을 볼 수 있다.
Author And Source
이 문제에 관하여(Github actions와 slack 연동해서 알림받기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sdb016/Github-actions와-slack-연동해서-알림받기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)