약 2년전에 Github Actions로 로또 자동 구매하기
포스팅을 보고난 후로 지속적으로 자동 구매를 해오다가 몇 달 전부터 예치금을 충전하지 않아서 지속적으로 이메일로 오류가 난다고 메일이 도착하고 있었습니다.
오랜만에 로또를 다시 구매해보고자 예치금을 충전해놓고 오늘을 기다려왔는데 오늘조차 똑같이 오류메일이 도착해있어서 무슨 문제인가 싶어서 해결하기로 했습니다.
아래 링크는 제가 참고한 포스팅입니다.
https://qiita.com/leechungkyu/items/223018d712420703c4f3 (Github Actions으로 로또 자동 구매하기 (지속적 로또))
우선 Github로 가서 오류로그를 먼저 확인해보았는데 해당 오류는 아래와 같았습니다.
Python 3.7버전을 찾을 수 없다는 오류였는데요
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.7]
steps:
- uses: actions/checkout@v2
- name: Set up python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
위는 Github actions의 workflow.yml
의 일부분인데 현재 ubuntu-latest(= Ubuntu 24.04) 이미지에는 3.7 바이너리가 더 이상 들어있지 않아서 발생되는 오류였습니다.
Python버전을 최신버전인 3.11버전으로 설치되도록 수정하였습니다. 아래는 수정된 부분의 파일입니다.
jobs:
buy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
위와 같이 수정한 후 workflow을 돌려보니 또 다른 오류가 발생했는데
이번에는 wget
으로 받아오려던 chromedriver 100 ZIP이 더 이상 서버에 없어서 발생한 오류였습니다.
# 4. 우분투 패키지 설치
- name: Install ubuntu packages
run: |
sudo apt-get update
sudo apt-get install -y fonts-unfonts-core fonts-unfonts-extra google-chrome-stable unzip
wget https://chromedriver.storage.googleapis.com/100.0.4896.20/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d $HOME/.local/bin
chmod +x $HOME/.local/bin/chromedriver
echo "$HOME/.local/bin" >> $GITHUB_PATH
위의 부분 중간에서 오류가 난 것 같습니다.
Chromedriver 수동 설치 블록을 지우고 python packages 단계에서 Selenium 4.6+가 제공하는 selenium-manager가 알아서 드라이버를 내려받도록 수정하여 아래와 같이 수정하였습니다.
- name: Install Python packages
run: |
pip install selenium>=4.6 requests twython pillow \
gspread google-api-python-client oauth2client \
playwright
python -m playwright install --with-deps
name: Lotto Buy Bot (로또 구매봇)
on:
# 매주 토요일 08:55 KST → 금요일 23:55 UTC
schedule:
- cron: '55 23 * * 5'
# 수동 실행
workflow_dispatch:
jobs:
buy:
runs-on: ubuntu-latest # Ubuntu 24.04
steps:
# 1. 코드 체크아웃
- uses: actions/checkout@v4
# 2. Python 3.11 설치 (캐시 X)
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
# 3-A) requirements.txt 없이 직접 패키지 설치
- name: Install Python packages
run: |
pip install selenium>=4.6 requests twython pillow \
gspread google-api-python-client oauth2client \
playwright
python -m playwright install --with-deps
# 4. 우분투 패키지 설치
- name: Install OS packages
run: |
sudo apt-get update
sudo apt-get install -y fonts-unfonts-core fonts-unfonts-extra \
google-chrome-stable
# 5. 로또 자동 구매 스크립트 실행
- name: Run the bot
run: python ./buy_lotto.py
이번주는 직접 수동으로 로또를 구매하여 다음주까지 한번 결과를 기다려봐야겠네요