# Gitea Actions 크론잡 자동화 ## 작성일: 2025-09-04 ## 상태: 💡 아이디어 ## 목적: 정기 작업 자동화 (뉴스 파싱, 헬스체크 등) ## 기본 구조 ### 워크플로우 파일 위치 ``` repository/.gitea/workflows/cron_*.yml ``` ### 크론 표현식 ```yaml on: schedule: - cron: "0 0 * * *" # UTC 기준 (KST -9시간) ``` ## 활용 예시 ### 1. 네이버 블로그 뉴스 파싱 ```yaml 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 조회 예시 ```yaml - 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 호출 예시 ```yaml - 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: 한 파일에 여러 스케줄 ```yaml on: schedule: - cron: "0 0 * * *" # 매일 09시 - cron: "0 9 * * *" # 매일 18시 ``` ## 주의사항 1. **시간대**: UTC 기준, KST는 +9시간 2. **Runner**: 51123 서버에 이미 설치됨 3. **DB 접속**: localhost로만 접근 (보안) 4. **실행 환경**: ubuntu-latest 컨테이너 ## 구현 우선순위 1. 네이버 블로그 뉴스 파싱 자동화 2. 서비스 헬스체크 정기 실행 3. DB 로그 정리 자동화