# 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 로그 정리 자동화