본문 바로가기
DevOps/Git & Github

Github Webhooks 활용하여 자동 배포 맛보기

by Kallunar 2023. 11. 21.

github actions를 이용하여 CI/CD를 구축한다는데
그것보다는 조금 더 간단하게
github의 webhooks를 이용하여
자동 배포를 맛만 봐보자

Webhooks?

webhooks가 뭔고 하니
이 레포지토리에 뭔가 이벤트가 발생하면
등록한 URL로 POST 요청을 보내 그 변화를 알려주는 서비스라고 한다

고로 서버용 컴퓨터에
이 POST 요청을 받아 git pull을 하는
전용 서버를 하나 만들어 놓으면

내가 github에 push만 해도
서버 컴퓨터가 알아서 바뀐 파일을 받아 빌드하게 되니
자동으로 배포가 되는 것이다!

그러면 일단 이 POST 요청을 받아 처리할
간단한 서버를 파이썬 Flask를 이용해 만들어보자

webhooks.py

  • buildBranch : git pull 을 받을 대상 branch 지정
  • buildPath : git pull 받을 서버 컴퓨터의 경로 지정
  • buildCommand : webhooks POST 요청을 받았을 때 실행할 명령 정의. buildPath로 디렉토리를 변경한 후, 진행하던 작업을 임시 저장한 후(git stash), git pull을 진행한다(git pull origin main을 실행하게 됨).
  • setDeploy class를 정의하여 POST 용 api 작성 후, POST 요청을 보낼 URL로 '/deploy' 설정

 

이제 이 파일을 서버 컴퓨터에 업로드하자

github-webhooks 폴더에
위에서 작성한 webhooks.py 파일을 담아
업로드했다

이렇게 해서 github webhooks로부터
알림을 받을 준비는 끝났다

그러면 이제 github를 통해 진짜 배포하고자 하는
서버 파일을 만들어 github에 push 해둔다.

간단한 서버를 하나 만들어 올려두었다

그 후 해당 레포지토리의 설정에 있는
webhooks 탭으로 이동하여
webhooks를 등록해준다

URL은 webhooks.py에서 설정한대로 적어주고
push event가 발생했을 때만 POST 요청을 주도록 설정했다

서버 컴퓨터에 배포용 서버 파일을 클론하여
github와 연결해주고
webhooks 요청 처리하는 서버인 webhooks.py와
배포용 서버인 tcp-server.py를 둘 다 실행시킨다

클라이언트가 메시지를 보내면
그 메시지 뒤에 뭐라뭐라 사족을 붙여서
도로 돌려주는 서버인데
"test test !!!" 가 붙어서 왔음에 주목하자

이제 내 로컬 컴퓨터에서 서버 파일을 수정하여
github에 push를 한다
test test !!! 에서  I'm a new server !!!로 수정되었다

그 후 다시 서버에 메시지를 보내보니
수정한대로 "I'm a new Server !!!" 가 붙어서 왔다

진짜 업데이트가 되었나 봤더니
실제로 github에 push가 된 것을 감지하고
webhooks가 POST 요청을 보내온 것을 확인할 수 있다

그래서 webhooks 요청 처리용 서버에서 git pull을 받아
tcp-server가 재시작되었음을 알 수 있다

서버 컴퓨터의 파일을 직접 열어보니
진짜로 바뀌어 있다

이렇게 해서 자동 배포를 찍먹해보았다

'DevOps > Git & Github' 카테고리의 다른 글

Git/Github 간단 정리  (0) 2022.04.30

댓글