diff --git a/ideas/250904_gitea_actions_cronjob_automation.md b/ideas/250904_gitea_actions_cronjob_automation.md new file mode 100644 index 0000000..cab794a --- /dev/null +++ b/ideas/250904_gitea_actions_cronjob_automation.md @@ -0,0 +1,115 @@ +# 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 로그 정리 자동화 \ No newline at end of file diff --git a/troubleshooting/250904_admin_skill-news_zombie_process_gitea_actions.md b/troubleshooting/250904_admin_skill-news_zombie_process_gitea_actions.md index b024006..8bb35ba 100644 --- a/troubleshooting/250904_admin_skill-news_zombie_process_gitea_actions.md +++ b/troubleshooting/250904_admin_skill-news_zombie_process_gitea_actions.md @@ -28,9 +28,12 @@ services: container_name: robeing-skill-news ``` -### 결과 +### 결과 ✅ 해결 완료 - 컨테이너 재시작 후 좀비 프로세스 67개 → 1개로 감소 - 1개는 claude 관련 git 프로세스(무관) +- skill-news 컨테이너 정상 작동 중 (healthy) +- Gitea Actions 자동 배포 성공 +- 2025-09-04 재확인: 정상 작동 유지 ## 문제 2: Gitea Actions YAML 문법 오류