본문 바로가기
DevOps

CI/CD 구축하기(3) - 텔레그램 알림 설정

by byeongoo 2021. 8. 25.

이번편에서는 docker image가 docker hub에 업로드 되면 텔레그램으로 알림을 받을 수 있게 설정하겠다.

 

1. 텔레그램 token 및 chnl_id 조회

텔레그램을 github action에서 사용하기 위해서는 텔레그램 token과 해당 채널 id를 조회해야한다.

 

token을 구하기 위해서는 먼저 BotFather을 이용하여 bot을 생성해야한다.

 

https://web.telegram.org/k/ 에 접속해서 BotFather을 검색하자

 

우측 대화창 부분에 아래와 같이 대화를 시작할 수 있는 창이 보이는데 여기서 START 를 눌러 대화를 시작한다. 아래와 같이 사용할 수 있는 명령어들이 쭉 나열된다.

 

 

이제 봇의 name 과 username 을 입력한다.

  • name 은 봇을 부르는 이름이다.
  • username 은 일종의 id 와 같은 개념으로 반드시 bot 으로 끝나야하며 기존에 텔레그램에 등록되어있는 username 은 사용할 수 없다. 

 

 

bot 이름까지 만들면 token id를 보여준다.

 

브라우저 주소 입력창에 https://api.telegram.org/bot봇Token값/getUpdates 를 입력한다. 

https://api.telegram.org/bot802131984:AAHH6QL4TmvYwaUhgZheTNg9vteSVzeTKPQ/getUpdates

 

앞에서 만든 봇과 대화를 시작한다. 아무 텍스트나 보내본다. 그리고 나서 다시 url로 접속해보면 아래 처럼 result에 값이 생기는데 이게 봇의 chat id이다.

{"ok":true,"result":[{"update_id":178332702, "message":{"message_id":1,"from":{"id":879500000,"is_bot":false,"first_name"

 

그리고 나서 텔레그램에서 새로운 채널을 만들고 bot을 거기에 추가한다. 그리고 다시 url을 접속해서 보면 해당 bot이 접속해있는 채팅방 목록을 볼 수 있다. 내가 만든 스프링 템플릿 방의 아이디는 "-1001460523052"인 것이다.

"chat": {
	"id": -1001460523052,
	"title": "스프링 템플릿",
	"type": "channel"
},

 

2. Git Repository secrets 추가 및 Github action yml 파일 수정

이제 토큰 아이디와 채팅방 아이디를 얻었으니 git repository의 settings -> Secrets에서 해당 값을 추가한다.

 

마지막으로 "send custom message with args" 부분을 추가해준다.

name: Java CI with Gradle

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

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: Grant execute permission for gradlew
      run: chmod +x gradlew
      
    - name: Build with Gradle
      run: ./gradlew build
      
    - name: Login to DockerHub
      uses: docker/login-action@v1
      with:
        username: ${{secrets.DOCKERHUB_USERNAME}}
        password: ${{secrets.DOCKERHUB_TOKEN}}
    
    - name: build and release to DockerHub
      env:
        NAME: goohoon # 계정 명
        REPO: spring-template # 레포 이름
      run: |
        docker build -t $REPO .
        docker tag $REPO:latest $NAME/$REPO:latest
        docker push $NAME/$REPO:latest
        
    - name: send custom message with args
      uses: appleboy/telegram-action@master
      with:
        to: ${{ secrets.TELEGRAM_TO_ID }}
        token: ${{ secrets.TELEGRAM_TOKEN }}
        args: ${{ github.actor }} 님의 소스 코드가 반영 됐습니다.

 

빌드가 완료되면 텔레그램으로 메세지가 오는 것을 볼 수 있다.