Github actions를 이용하여 빌드 결과를 알림으로 받을 수 있다.
텔레그램이나 Slack등 다양한 방식으로 알림을 받을 수 있다.
그 중 업무적으로 가장 많이 사용하는 메신저인 Slack과 연동하여 빌드 결과를 알림받을 수 있도록 해보겠다.
Action-Slack 을 이용하여 손쉽게 연동할 수 있다. 공식 사이트에 들어가면 usage나 fields를 확인할 수 있다.
먼저 Slack api에 들어가서 create new app
을 누르고, 본인이 원하는 App Name
, development slack workspace
를 선택해서 새로운 앱을 만들어준다.
그러면 위와 같은 페이지가 나온다.
이 중 Incoming Webhooks
를 클릭하여 활성화시킨다. 그 후 Add New Webhook to workspace
를 클릭하여 slack에 내가 원하는 채널과 연동시킨다.
Allow
를 클릭하면 Webhook URL
이 발급되는데 이 값을 Github의 secrets에 환경변수로 추가할 것이다.
깃허브 프로젝트의 Settings
/secret
탭으로 가서 오른쪽 상단에 New repository secret
를 클릭하여 환경변수를 추가한다.
Name
에는 SLACK_WEBHOOK_URL(또는 원하는 환경변수 이름)을 넣고 Value
에 아까 복사한 Webhook URL
값을 넣은 후 환경변수를 추가한다.
이제 workflow를 만들기 위해 yml파일을 작성할 것이다.
yml파일의 경로는 .github/workflows/
아래에 (원하는 이름).yml
이라는 이름의 파일을 작성하면 된다.
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
에는 실제 동작할 명령들을 적는다.
build
라는 job을 생성하고, 그 아래에는 2개의 step이 존재한다.runs-on
은 어떤 OS에서 실행될지 지정한다.uses
는 다른 사람이 이미 만들어 놓은 action을 사용할 때 지정한다. 위의 경우 8398a7/action-slack을 사용한다.
설정을 마치고 지정한 브랜치에서 지정한 액션이 일어났을 때 위와 같이 자동으로 actions가 실행된다.
slack에 내가 지정한 채널로 들어가보면 내가 선택한 field 옵션의 정보들에 대한 알림이 오는 것을 볼 수 있다.