깃허브 액션 CI/CD 및 크론 스케줄링 시각화

크롤러를 열심히 만들었어도, 내 로컬 컴퓨터에서 매번 수동으로 실행한다면 진정한 업무 자동화라고 부를 수 없습니다. 그렇다고 24시간 도는 클라우드 서버(AWS 등)를 항시 대여해 두자니 매달 청구되는 고정 요금이 부담스럽습니다. 서버 임대 비용 0원으로, 깃허브가 제공하는 클라우드 가상환경(GitHub Actions)과 Cron 스케줄러를 조합해 무료 수집 자동화망을 가동하는 방법을 학습합니다.

본문 상단 광고 슬롯 (구글 애드센스 반응형 디스플레이 광고)

1. GitHub Actions 워크플로우 파일 설계

프로젝트 폴더의 `.github/workflows/crawler.yml` 경로에 가상머신 기동 명세서를 작성합니다.

name: Daily Automated Web Scraper

on:
  schedule:
    # 한국 시간 기준 매일 오전 9시 정기 자동 실행 (UTC 시간 기준 매일 00:00 분배)
    - cron: '0 0 * * *'
  workflow_dispatch: # 필요 시 수동 강제 실행 버튼 허용

jobs:
  build-and-run:
    runs-on: ubuntu-latest
    steps:
      - name: 체크아웃 소스 코드
        uses: actions/checkout@v3

      - name: 파이썬 런타임 셋업
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'

      - name: 의존성 패키지 설치
        run: |
          pip install requests beautifulsoup4 pandas

      - name: 스크래퍼 실행 및 데이터 갱신
        run: |
          python main_scraper.py
"GitHub Actions의 무료 플랜은 정적 스케줄링 실행 시간이 지정한 cron 값보다 수 분에서 수십 분 지연 실행되는 유동 큐 배치가 일어날 수 있으므로, 초 단위의 정밀한 동기화가 필요한 작업은 로컬 리눅스의 crontab이나 자체 VPS 서버를 활용하는 것이 현명합니다."
본문 중간 광고 슬롯 (구글 애드센스 인프리미엄 콘텐츠 광고)

2. 수집된 결과의 저장: Git Auto Commit & Push

가상 러너가 실행 완료한 결과물 데이터를 원래의 저장소 브랜치로 자동 push하여 파일 데이터베이스(JSON/CSV)를 영구 업데이트해 두는 스크립트 단계를 yml의 하단부에 추가해 두면, 서버 한 대 없이도 매일 최신 수집 데이터로 자동 업데이트되는 기적의 1인 자동화 갤러리 시스템을 완성할 수 있습니다.

3. API 키 노출 방지: GitHub Secrets 연동

크롤링 데이터를 Supabase나 외부 API 서버에 쏘아 보낼 때 필요한 비밀 키(Secret API Key)는 절대 깃 소스코드 내부에 하드코딩해 푸시하면 안 됩니다. 깃허브 리포지토리의 `Settings > Secrets and variables` 환경설정 내에 환경변수로 등록한 후, yml 파일에서 `env: API_KEY: ${{ secrets.SUPABASE_KEY }}`와 같이 안전하게 참조해야 합니다.

4. 요약: 최종 무비용 자동화 파이프라인

서버 유지비 0원의 깃허브 클라우드 스케줄링을 기용하여, 매일 정기적으로 웹 트래픽 정보와 타겟 원시 자료를 캐싱하는 완전 무인 데이터 허브를 개설해 보십시오.

본문 하단 광고 슬롯 (구글 애드센스 일치하는 콘텐츠/디스플레이 광고)