Heroku - 파이썬 디스코드 봇 프로젝트 연동하기 (깃헙기반)

Heorku에 파이썬 디스코드 봇 연동하기 (깃헙기반)

앞서 Heroku의 기본 설정을 진행했다면, 이제는 실제 디스코드 봇을 연동해볼 차례이다.

Heroku CLI를 사용하거나, 깃헙 연동을 하면 되는데 이 포스트에서는 깃헙 연동을 하는 방법을 다룬다.

 

사용한 코드

앞서 테스트한 디스코드 봇을 바탕으로 기본 디스코드 봇을 Heroku에 연동해 보고자 한다.

 

 

파이썬으로 디스코드 봇 개발 시작하기 (기본 구조 잡기)

discord.py를 사용하여 디스코드 봇 개발 시작하기 디스코드 봇 개발을 위해 사전준비를 마쳤다면, 이제 본격적으로 개발하기 위해 틀을 잡아본다. discord.py 설치 아래 글들을 참고하여, discord.py 사

luran.me

깃헙 프로젝트 생성 혹은 연동

깃헙 프로젝트를 아래와 같이 생성하자.

깃헙 설정

Owner 칸에는 본인의 계정이 뜰 것이다. Repository Name에 프로젝트 이름을 넣어준다.
해당 깃헙 repository를 외부에 공개할 것이냐 개인 소유의 것으로 둘 것이냐에 따라 public/ private를 지정해 준다.


 



echo "# 설명 메시지" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:내 깃헙 계정/프로젝트 repo.git
git push -u origin main

혹은 미리 생성해둔 프로젝트가 있다면 아래와 같이 연동해줘도 된다.

git remote add origin git@github.com:내 깃헙 계정/프로젝트 repo.git
git branch -M main
git push -u origin main

아니면, 위에서 생성한 깃헙 프로젝트를 clone 한 후, 그 디렉토리로부터 작업을 시작해도 된다.

 

Heroku와 깃헙 코드 연동하기

지난 글에서는, Heroku의 기본 설정까지만 마쳤다. 이제 깃헙 프로젝트를 생성했으니, 본격적으로 이어서 연동 작업을 진행해 본다.
앞서 진행했던 것처럼, Heroku의 설정화면으로부터 깃헙과 연결하겠다고 설정하자.

Heroku Github 연동

화면 하단의 Connect to GitHub 버튼을 클릭한다.

Heroku Github 연동

위와 같은 안내 화면이 뜨면, Authroize Heroku 버튼을 누르자.
안내 문구에도 Public/ Private을 가리지 않고 연동된다고 안내가 되고 있다.

Github 인증

위와 같이, 깃헙에서 비밀번호를 요구한다. 깃헙의 비밀번호를 입력하고 연동을 허가해 준다.

Heroku Github 연동

Heroku와 깃헙 인증이 완료되면, 위와 같은 창이 뜨고 연동할 repository를 검색한 후 Connect 버튼을 누른다.

 

디스코드 배포 설정하기

Heroku 대시보드 > Deploy 메뉴로 이동한 후, 아래로 스크롤하면 앱 배포에 대한 설정을 변경할 수 있다.

discord deploy 설정

Automatic deploys 탭의 표시한 부분을 클릭한다. 초기에는 Enable이라는 문구가 써 있으며, 활성화시키면 위와 같이 Disable로 시작하는 문구로 바뀐다.

설명 문구에 써 있는 바와 같이, master 브랜치로 push하면 그 변경 내용이 자동으로 배포된다는 안내 문구이다.

즉, 봇을 개발한다음에 remote origin에 push하기만 하면 배포된다.

수동으로 한 번 직접 배포를 해보자. Manual Deploy 탭의 Deploy Branch를 클릭하면 소스의 변경 분이 없는 상태에서도 임의 배포가 진행된다.

discord bot 배포

현재 상태에서는 별도의 작업을 추가로 해주지 않았기 때문에 위와 같이 에러가 발생한다.

에러 메시지에 따르면, 어떤 buildpack을 사용할지 잘 모르겠다고 한다.

즉, 어떤 언어를 사용할지 지정해 준 적이 없으므로 언어를 지정해 주자.

반응형

 

사용 언어 설정

대시보드 > Settings 메뉴로 이동한다.

화면 중간에 Buildpacks와 관련된 메뉴가 보일 것이다.

Heroku Buildpacks

Add Buildpacks 버튼을 누르면 아래와 같은 선택 팝업이 뜬다.

본인이 사용할 봇의 언어를 선택하면 되는데, 내 경우는 파이썬 디스코드 봇이므로 파이썬을 고른다.

Heroko Buildpacks Python

이제, 앞서 시도한 바와 같이 수동 재배포를 다시 해 보자.

Heroku Deploy

 

앱 동작을 위한 보조 작업

위와 같이 하면, 배포는 성공적으로 한 상태이다.

그러나, 봇이 정상 동작하는 상태일까? 아니다. 빌드 및 배포는 했지만 아직 앱이 동작하지는 않는다. 엄밀히 말하면, 앱을 구동시킨 상태는 아니다.
디스코드 봇을 동작시키기 위해 다음의 작업을 추가로 해주자.

 

파이썬 런타임 환경 지정

Heroku 환경에서 실행할 파이썬의 버전을 명시적으로 지정해 보자.

로컬에서의 파이썬 버전은 아래의 명령어로 확인 가능하다.

$ python --version

출력되는 버전을 바탕으로, 아래와 같이 runtime.txt를 작성한다.

python-3.8.5

이 파일은 깃헙에 푸쉬한다.

 

파이썬 의존성 라이브러리 지정

파이썬 프로젝트 파일 아래, 본인의 로컬 환경과 똑같은 라이브러리가 Heroku 파이썬 런타임에 실행되도록 보장해 줘야 한다.
따라서, 본인만의 requirements.txt를 추출하고 깃헙에 push 한다.

예를 들어 파이썬 디스코드 봇의 경우, 아래와 같은 requirements.txt를 작성하면 될 것이다.

discord==1.7.3

현재 로컬 프로젝트로부터 requirements.txt를 추출하는 방법은 아래의 글을 참고하자.

 

파이썬 - 의존성 라이브러리 추출하기/설치하기 (pip 사용)

파이썬 라이브러리 추출하기/ 설치하기 파이썬 코드에 선언된 import 문이 있다 하더라도, 해당 라이브러리들이 자동으로 설치되지는 않는다. 즉, 로컬 개발환경에서는 개발하면서 이것저것 설치

luran.me

 

디스코드 봇 실행 명령어 명시

앞의 두 절차로, 어떤 파이썬 버전을 사용할 것인지와 어떤 라이브러리를 사용할 것인지 설정하였다.

즉, 내가 만든 파일을 실행할 준비가 된 셈이다.

이제 나의 봇을 실행할 명령어를 시스템에 알려주자.

Procfile (대소문자 주의)이라는 파일을 만들고, 아래와 같이 적어준다.

worker: python 봇이름.py

그리고 이 Procfile도 깃헙에 푸쉬한다.

이제 거의 다 되었다.

대시보드 > Resources 메뉴로 이동하자.

Heroku resource

다시 수동 배포를 진행해 보자.

정상적으로 배포가 되고, 기존에 로컬에서 동작하던 기능이 Heroku 환경에서도 정상 동작하는 것을 확인할 수 있다.

이제 봇은 원격 클라우드 서버에서 365일 24시간 나를 위해 일을 할 기본 준비가 된 것이다.

Discord bot

댓글

Designed by JB FACTORY