# skill-calendar 51124 서버 자동 배포 구성 (계획) **날짜**: 2025-12-06 **작성자**: admin **관련 파일**: `skill-calendar/.gitea/workflows/deploy.yml` (생성 예정) --- ## 현재 상태 **skill-calendar는 여전히 수동 배포 상태이며, 이 문서는 자동 배포를 위한 계획 초안입니다.** ## 목표 skill-calendar 서비스를 Gitea Actions를 통해 51124 서버에 자동 배포하도록 구성 ## 배경 - 현재 상태: skill-calendar는 자동 배포 미설정 (AGENTS.md:29) - 문제: `.github/workflows/deploy.yml` 존재하나 Gitea Actions는 `.gitea/workflows/` 경로만 인식 - 참고: skill-rag-file, skill-slack, rb8001 등은 이미 자동 배포 구성 완료 ## 아키텍처 ### 서버 관계 - **51123 서버**: Gitea Actions runner (self-hosted) - **51124 서버**: 배포 대상 서버 (192.168.219.52, SSH 포트 51124) - **배포 플로우**: 51123 runner → SSH(51124) → git pull → docker 재시작 ### 필수 Secrets - `SSH_PRIVATE_KEY_51124`: 51124 서버 SSH 키 - `SSH_HOST_51124`: 192.168.219.52 - `SSH_USER_51124`: admin ## 구현 계획 ### Phase 1: 워크플로우 파일 생성 - 경로: `skill-calendar/.gitea/workflows/deploy.yml` - 참고: `skill-rag-file/.gitea/workflows/deploy.yml`, `rb8001/.gitea/workflows/cicd.yml` ### Phase 2: SSH 연결 설정 - SSH 키 설정 (`~/.ssh/deploy_key`, chmod 600) - known_hosts 추가 (`ssh-keyscan -p 51124`) - 연결 테스트 (`ConnectTimeout=10`, `StrictHostKeyChecking=no`) ### Phase 3: 배포 스크립트 - 경로 이동: `/home/admin/ivada_project/skill-calendar` - Git pull: `git pull origin main --rebase` - .env 파일 확인 (없으면 exit 1) - Docker 재시작: `docker compose down || true`, `docker compose up -d --build` ### Phase 4: 헬스체크 - 엔드포인트: `http://localhost:8512/health` - 재시도: 최대 10회 (5초 간격) - 실패 시: 컨테이너 로그 출력 후 exit 1 ### Phase 5: 에러 처리 - `set -e`로 에러 즉시 중단 - 빌드 실패 시 로그 확인 (`docker compose logs --tail=50`) - 컨테이너 상태 확인 (`docker ps | grep skill-calendar`) - SSH 키 정리 (`rm -f ~/.ssh/deploy_key`) ## 주의사항 - YAML 문법: heredoc 사용 시 따옴표 처리 주의 (참고: `250904_admin_skill-news_zombie_process_gitea_actions.md`) - Actions 캐시: 워크플로우 수정 시 `/root/.cache/act/` 캐시 삭제 필요할 수 있음 - DB 연결: skill-calendar는 51123 PostgreSQL(main_db)에 연결하므로 DB 네트워크/권한 설정도 함께 고려해야 함 (`docker-compose.yml:14`) ## 구현 체크리스트 실제 구현 시 다음 항목을 확인하고 이 문서에 업데이트: - [ ] `.gitea/workflows/deploy.yml` 파일 생성 완료 - [ ] Gitea Secrets 설정 확인 (`SSH_PRIVATE_KEY_51124`, `SSH_HOST_51124`, `SSH_USER_51124`) - [ ] Actions runner 설정 확인 (self-hosted) - [ ] 첫 배포 성공 로그 확인 - [ ] 헬스체크 정상 작동 확인 ## 참고 문서 - `DOCS/journey/troubleshooting/250728_happybell80_nginx프록시및CI배포문제해결.md`: SSH 인증 실패 해결 - `DOCS/journey/troubleshooting/250820_happybell80_skill-email_DB통합및Actions배포.md`: 경로 문제 해결 - `DOCS/journey/troubleshooting/250929_actions_cache_problem.md`: Actions 캐시 문제 - `DOCS/book/300_architecture/312_문서_작성_원칙.md`: 문서 작성 원칙 --- **구현 완료 시**: 이 문서를 `journey/troubleshooting/`으로 이동하고 구현 섹션 삭제