- signal-batch 프로젝트 패턴 적용: CI에서 SSH로 직접 systemctl restart
- Docker 컨테이너 권한 제약(nsenter 불가, inotify 미작동) 해결
- watcher.path/timer 폴링 제거 → SSH 직접 명령으로 단순화
- 기동 확인: 최대 30초 health check 후 결과 출력
- Gitea Secret: DEPLOY_SSH_KEY 추가
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Docker 컨테이너에서 nsenter/inotify 불가 → 30초 폴링 타이머로 변경
- kcg-backend-deploy.timer: 30초마다 JAR mtime 체크
- kcg-backend-deploy.service: JAR 갱신 감지 시 systemd 파일 교체 + restart
- watcher.path(inotify 기반) 제거, deploy.timer(폴링 기반)로 교체
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- sudo 제거 (컨테이너 내 root)
- apt-get으로 JDK/Maven 설치 (sudo 없이)
- actions/setup-node 제거 (node:24 이미지 기본 제공)
- systemctl → .deploy-trigger + systemd path unit
- kcg-backend-watcher.path/.service 추가
- .gitea/workflows/deploy.yml: main merge 시 frontend/backend 자동 빌드·배포
- deploy/kcg-backend.service: systemd 서비스 (JDK 17, 2~4GB 힙)
- deploy/nginx-kcg.conf: SSL + SPA 서빙 + API 프록시 + 외부 API CORS 프록시
- .githooks/pre-commit: 모노레포 대응 (frontend tsc+eslint, backend mvn compile)
- .gitignore: frontend/backend/prediction 각각 빌드 산출물 추가
- CLAUDE.md: 모노레포 구조 반영
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>