2.5 KiB
2.5 KiB
Gitea Actions 크론잡 자동화
작성일: 2025-09-04
상태: 💡 아이디어
목적: 정기 작업 자동화 (뉴스 파싱, 헬스체크 등)
기본 구조
워크플로우 파일 위치
repository/.gitea/workflows/cron_*.yml
크론 표현식
on:
schedule:
- cron: "0 0 * * *" # UTC 기준 (KST -9시간)
활용 예시
1. 네이버 블로그 뉴스 파싱
name: Daily News Parser
on:
schedule:
- cron: "0 0 * * *" # 매일 KST 9시
workflow_dispatch: # 수동 실행 옵션
jobs:
parse-news:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install playwright requests
playwright install chromium
- name: Parse and send to Slack
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
run: |
python scripts/parse_naver_news.py
2. DB 조회 예시
- name: Query PostgreSQL
env:
PGPASSWORD: ${{ secrets.DB_PASSWORD }}
run: |
psql -h localhost -U robeings -d main_db \
-c "SELECT * FROM robeing_stats LIMIT 10;"
3. API 호출 예시
- name: Call API
run: |
curl -X POST "http://localhost:8000/api/endpoint" \
-H "Authorization: Bearer ${{ secrets.API_TOKEN }}" \
-d '{"key":"value"}'
Secrets 관리
Gitea 웹 UI에서 설정:
- 조직 레벨: 모든 저장소에서 사용
- 저장소 레벨: 특정 저장소만 사용
필요한 Secrets:
DB_PASSWORD: PostgreSQL 비밀번호SLACK_WEBHOOK_URL: 슬랙 알림용API_TOKEN: API 인증 토큰
여러 크론잡 관리
방법 1: 파일 분리
.gitea/workflows/
├── cron_morning.yml # 아침 작업
├── cron_evening.yml # 저녁 작업
└── cron_weekly.yml # 주간 작업
방법 2: 한 파일에 여러 스케줄
on:
schedule:
- cron: "0 0 * * *" # 매일 09시
- cron: "0 9 * * *" # 매일 18시
주의사항
- 시간대: UTC 기준, KST는 +9시간
- Runner: 51123 서버에 이미 설치됨
- DB 접속: localhost로만 접근 (보안)
- 실행 환경: ubuntu-latest 컨테이너
구현 우선순위
- 네이버 블로그 뉴스 파싱 자동화
- 서비스 헬스체크 정기 실행
- DB 로그 정리 자동화