Github Actions에 등록된 Workflow를 트리거 이벤트에 따라 실행하고, 그 실행결과를 텔레그램 메시지로 보내거나 이슈에 등록합니다.
Github Actions가 가지고 있는 특징이 있으며, 해당 특징에서 발생하는 제약 사항을 극복하기 위한 파일 및 설정을 포함하고 있습니다.
Github Actions의 경우 아래와 같은 특징이 있습니다.
- cron(crontab)으로 지정한 스케쥴 대로 모든 것이 실행되지 않음
- cron으로 지정할 수 있는 최소 스케줄 간격은 5분임
- cron으로 지정한 시간보다 실제 실행시 15분 이상 지연 실행됨
- 저장소(Repository)에 60일 이상 변경사항이 없을 경우 Actions는 비활성화됨
- Private 저장소인 경우 월 사용량(2,000분)에 제한이 있음
- 트리거 이벤트가 발생할 때마다 새로운 가상 OS 환경이 준비되어 매번 Python 외장 모듈의 설치가 필요함
60일 이상 저장소 변경사항 없을 경우, Actions가 비활성화되는 것을 막기 위한 파일입니다. "Git Push" Action이 한 달에 한 번씩 date.txt 파일을 생성하고 저장소에 변경사항을 반영합니다.
매 실행시 Python 외장 모듈 설치를 위한 파일입니다. 작성한 코드 실행 전에 pip install 명령을 통해 파일 내 지정한 모듈을 설치합니다. Node.js에서 package.json 파일 내 dependencies 값과 같은 역할입니다. "A7S III Ward" Action의 "Install dependencies"에서 모듈을 설치합니다.
비공개(Private) 저장소인 경우 월 사용량 제한이 있으므로, 저장소를 공개 저장소로 사용하는 것이 좋습니다. 다만 Github이나 텔레그램과 연동하기 위해 사용되는 인증 토큰/키, ID들은 민감 정보이므로 소스코드로부터 분리가 필요합니다. 이들은 저장소 비밀 변수로 설정이 가능하며, 해당 정보는 Python 코드 내에서 환경변수로 그 값을 가져올 수 있습니다. (os 모듈 import 후, os.environ 딕셔너리 활용)
-
메시지를 보낼 텔레그램 봇의 토큰
텔레그램 내 BotFather를 통해 생성한 값입니다.
-
메시지를 받을 텔레그램 사용자 아이디
-
저장소에 이슈를 생성(Creating)하고 마감(Closing)하기 위한 깃험 사용자 액세스 토큰
Github > Settings > Developer Settings > Personal access tokens에서 생성한 값입니다.
깃헙 저장소(Github Repository) 내에 설정(Settings)에 있는 Secret에 메시지를 보낼 봇 토큰, 메시지를 받을 사용자 아이디가 저장되어 있습니다. 해당 정보는 노출되지 않습니다.
소니스토어 A7S III 와드입니다. 재고 입고시에 텔레그램으로 봇이 메시지를 보내줍니다. 재고 입고 여부와 상관 없이 확인 결과를 저장소 이슈로 생성(Creating)하고 마감(Closing)합니다.
중소기업 근로자 특별공급의 추천서 신청을 하기 위한, 주택특별공급 사업공고 와드입니다. 서울지역 신규 공고 발생시에 텔레그램으로 봇이 메시지를 보내줍니다.
-
-
Node.js 및 TypeScript 기반
-
마이크로 소프트웨어 잡지에서 접하여 가장 먼처 참조하였던 코드이며, 피터팬의 좋은 방 구하기에서 값을 가져와 저장소 이슈를 생성하는 방식으로 결과를 저장합니다. Node.js 특성 상 처리하는 업무 대비 파일 및 코드량이 많아 Python을 검토하는 계기가 되었습니다.
-
-
-
Node.js 및 JavaScript 기반
-
Github Actions 초심자가 검토하기 좋은 미니멀한 예제입니다.
-
-
-
Python 기반
-
Yes24를 크롤링(Crawling)하여 저장소 이슈를 생성하는 방식으로 결과를 저장(피터팬의 좋은 방 구하기 예제와 동일 작동)합니다.
-
-
파이썬을 이용하여 텔레그램(Telegram) 메세지 보내기
-
Python 기반
-
매우 간단한 텔레그렘 메시지 보내기 예제입니다.
-
-
-
Python 기반
-
텔레그램 메시지 보내기 예제입니다. 1편 외에 이후 후속편에서 InlineKeyboard 등 추가 기능들도 확인할 수 있습니다.
-