본문 바로가기
코드리뷰

블로그 자동 포스팅을 위한 Github Actions 이용하기

by 디마드 2022. 10. 23.

크롤링을 통해 구축한 유용한 자료를 자동 포스팅해보자. 최소한의 시간과 노력으로 최대의 효과를 낼 수 있다. 물론 초기 구축은 일정 시간이 소요된다. Github에서 소스  관리를 하는 방법부터 배워야 하고 Github Actions을 이용해 일종의 작업 배치를 돌리는 법을 배워야 한다. 

서버 프로그래머라면 배치 프로그램 스케줄링이 익술할 것이다. 유닉스/리눅스면 cron이고 윈도즈면 작업 스케줄러에 등록한다. 하지만 매번 로컬 PC를 켜 놓을 수도 없는 일이다. 물론 유료 클라우드 서비스를 이용할 수도 있다. 찾아보니 Github에서 스케줄링을 무료로 제공한다. 사용 제한은 있지만 소규모는 무료로 사용하는 데 지장이 없는 것 같다.

 

 

파이썬 크롤링으로 YES24 베스트 셀러 Top 10 가져오기

크롤링을 이용해 YES24 종합 베스트 Top10을 가져와 보았다. 간단할 줄 알았는데 2시간은 꼼짝없이 코딩을 했네요. 오랜만에 코딩하고 즐거움을 느꼈음...회사에서도 이러면 얼마나 좋을까나....T.T ~

iamgus.tistory.com

지난 포스팅에서 크롤링을 이용한 자동 포스팅을 소개했었다. 여기에 자동 배포를 연결 시켜보자. 그러면 내가 자는 동안에 원하는 시간에 포스팅이 가능하다. 일종의 오토 시스템 구축인셈이다. 

1. Github 가입하기

어렵지 않으니 패스~

2. Github 프로젝트 레파지토리 생성 및 파일 업로드

프로젝트 저장 공간을 만들고 개발한 소스들을 올린다. 소스 제어와 관련이 있어서 약간 복잡하게 느껴질 수 있다. 별도 포스팅에서 정리해야 할 것 같다. 아니면 인터넷에서 검색하면 자료가 넘쳐나니 참고하도록...

3. Github Actions 등록

여기부터 스케줄링을 등록하는 부분이다. 이젠 로컬 pc환경이 아니 Github라는 서버 공간을 생각해야 한다. 즉, 그동안 잘 되던 소스도 에러가 날 수 있으니 천천히 점검해 등록하자. 

(1) Gitbub에서 Acionts을 클릭

(2) 레파지토리는 Python applicatoin 설정을 따라 구성

(3) 스케줄링/작업 파일 위치 및 파일명

본 레파지토리의 하위 디렉토리 workflows에 생성된다. 

(4) 스케줄링 및 작업 등록

전체 소스는 아래와 같다. 스케줄링, 작업 등을 간단하지만 세세하게 등록할 수 있어서 매우 유용하다. 게다가 무료다. 

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python application

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  schedule:
    - cron: '0 0 * * *'

permissions:
  contents: read

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python 3.9
      uses: actions/setup-python@v3
      with:
        python-version: "3.9"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install requests
        pip install html5lib
        pip install beautifulsoup4
        pip install flake8 pytest
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi    
    - name: Test with pytest
      run: |
        python auto_write_yes24_top10.py

프로그램 구동을 위한 dependencies를 해줘야 한다. 앞에서도 말했듯이 여긴 로컬 PC가 아닌 github라는 클라우드 공간이다. 즉, 로컬에 설치한 라이브러리들을 모두 없으므로 별도 설치를 해야 한다. 

프로그램 dependencies 설치

 

구동할 프로그램을 등록한다. 메인을 지정해 주면 된다. 

프로그램 메인 지정

스케줄링 등록은 유닉스/리눅스 cron을 등록해 보았다면 익숙할 것이다. UTL 시간이 등록되니 아래는 매일 오전 9시에 프로그램이 구동된다. 

githhub actions 스케줄링

4. 자동 포스팅 결과

자동 포스팅 결과

반응형

댓글