학교 공지 사항 자동화를 해보자 - 5
Intro. Github Action… 완전 혜자다
Github Action은 깃허브에서 제공하는 CI/CD 등의 자동화를 위해 지원하는 기능이다.
나의 경우, Crontab 용도로 사용 할 것이다.
기존에 구글 클라우드 등에서 스크립트를 계속 돌며, 시간을 체크 했는데 자원 낭비라 생각이 들어, Github Action Crontab을 생각했다
지금 만들고 있는 간단한 스크립트 위주의 봇 경우 깃허브 액션으로 돌리면 클라우드 비용도 안들고 괜찮은 듯하다
진행 방법
1. 레퍼지터리에 .github/workflows 생성
- .github/workflows 디렉터리를 생성하고 auto.yml로 파일을 생성한다.
2. auto.yml 내용 채우기
name: Auto Post Mail
on:
schedule:
- cron: "0 9 * * * "
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up Python 3.9.x
uses: actions/setup-python@v1
with:
python-version: 3.9.x
- name: Setup pip
run: |
python -m pip install —upgrade pip
pip install requests
pip install BeautifulSoup4
pip install datetime
- name: run
env:
EMAIL_ADDRESS: ${{secrets.EMAIL_ADDRESS}}
EMAIL_PASSWORD: ${{secrets.EMAIL_PASSWORD}}
run: python main.py
-
name : github action의 이름
- 위에서 보다시피 Auto Post Mail이란 이름을 Github Repo actions 에서 확인 할 수 있다.
-
on : Github action 구동 조건
- schedule : crontab 기능
0 9 * * *
: 하루에 한 번 UTC 09:00에 실행 하겠다는 뜻이다- 기본적으로 시간대가 UTC 기준이다
- push : 깃허브에 푸시하면 실행하겠다
- branches: 어떤 브랜치에서 푸시 될 때인지도 설정해줘야 한다
- push는 github actions 작동 테스트 하려고 임의로 추가해뒀다
- schedule : crontab 기능
on:
schedule:
- cron: "0 9 * * * "
push:
branches:
- main
- jobs
- 기본적으로 jobs 아래에 여러 job들이 소속되어 일을 하는 구조이다.
- build : job
- 내가 만든 job의 이름이 build인거라 이름 바꿔도 된다
- runs-on:
- steps에서 구동 될 행동들의 구동 환경
- steps
- job 내에서 순차적으로 진행 될 일들을 기술한다
- env
- 환경 변수를 저장 할 때 사용한다.
- 앞선 글에서 말했던 os.environ 해서 가져오는 값들이다.
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up Python 3.9.x
uses: actions/setup-python@v1
with:
python-version: 3.9.x
- name: Setup pip
run: |
python -m pip install —upgrade pip
pip install requests
pip install BeautifulSoup4
pip install datetime
- name: run
env:
EMAIL_ADDRESS: ${{secrets.EMAIL_ADDRESS}}
EMAIL_PASSWORD: ${{secrets.EMAIL_PASSWORD}}
run: python main.py
3. Github Secret 추가
환경 변수를 github action에서 사용하기 위해서, secret을 이용한다
github 레퍼지터리에 가서 settings의 secrets and variables에서 추가 할 수 있다
4. 준비 끝!
이제 지금까지 작성한 코드들을 푸시하면, 메일로 공지사항이 오는 것을 확인 할 수 있다.
고도화?
- 고도화라 말하기 부끄럽지만 향후 계획이다
- Github 이슈를 일종의 데이터베이스처럼 사용해서, 매일 공지 사항을 저장하고 불러온다
- 하루에 3번 정도 확인해서 메일을 보내도록 하되, 이에 따른 변동 사항을 예외 처리한다
- 더 많은 사람들이 사용할 수 있도록! 인터페이스를 더 단순하게 만든다
'프로젝트 > 사이드 프로젝트' 카테고리의 다른 글
BlindTok (2) - 프로젝트 CI 구성 (0) | 2023.03.31 |
---|---|
BlindTok (1) - 프로젝트 초기 세팅 (0) | 2023.03.29 |
학교 공지 사항 자동화를 해보자 - 4 (0) | 2023.03.22 |
학교 공지 사항 자동화를 해보자 - 3 (0) | 2023.03.22 |
학교 공지 사항 자동화를 해보자 - 2 (0) | 2023.03.22 |