diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index cbb5b55..58f718c 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -75,12 +75,12 @@ jobs: echo "JAR 내부 application-prod.yml 감지 → 외부 파일 제거" fi - # systemd 서비스 파일 배포 (watcher가 반영) + # systemd 서비스/타이머 파일 배포 (호스트 타이머가 감지하여 반영) cp deploy/kcg-backend.service $DEPLOY_DIR/kcg-backend.service - cp deploy/kcg-backend-watcher.service $DEPLOY_DIR/kcg-backend-watcher.service - cp deploy/kcg-backend-watcher.path $DEPLOY_DIR/kcg-backend-watcher.path + cp deploy/kcg-backend-deploy.service $DEPLOY_DIR/kcg-backend-deploy.service + cp deploy/kcg-backend-deploy.timer $DEPLOY_DIR/kcg-backend-deploy.timer - # JAR 교체 + 재시작 트리거 + # JAR 교체 (호스트 타이머가 JAR mtime 변경 감지 → 자동 재시작) cp backend/target/kcg.jar $DEPLOY_DIR/kcg.jar - date '+%s' > $DEPLOY_DIR/.deploy-trigger echo "Backend deployed at $(date '+%Y-%m-%d %H:%M:%S')" + echo "Host timer will detect JAR update and restart within 30s" diff --git a/deploy/kcg-backend-deploy.service b/deploy/kcg-backend-deploy.service new file mode 100644 index 0000000..7308d33 --- /dev/null +++ b/deploy/kcg-backend-deploy.service @@ -0,0 +1,23 @@ +[Unit] +Description=Check and restart KCG Backend if JAR updated + +[Service] +Type=oneshot +ExecStart=/bin/bash -c '\ + DEPLOY_DIR=/devdata/services/kcg/backend; \ + JAR=$DEPLOY_DIR/kcg.jar; \ + MARKER=$DEPLOY_DIR/.last-restart; \ + [ ! -f "$JAR" ] && exit 0; \ + if [ "$JAR" -nt "$MARKER" ] 2>/dev/null || [ ! -f "$MARKER" ]; then \ + SYSTEMD_DIR=/etc/systemd/system; \ + CHANGED=0; \ + for f in kcg-backend.service kcg-backend-deploy.service kcg-backend-deploy.timer; do \ + if [ -f "$DEPLOY_DIR/$f" ] && ! diff -q "$DEPLOY_DIR/$f" "$SYSTEMD_DIR/$f" >/dev/null 2>&1; then \ + cp "$DEPLOY_DIR/$f" "$SYSTEMD_DIR/$f"; \ + CHANGED=1; \ + fi; \ + done; \ + [ "$CHANGED" = "1" ] && systemctl daemon-reload; \ + systemctl restart kcg-backend; \ + touch "$MARKER"; \ + fi' diff --git a/deploy/kcg-backend-deploy.timer b/deploy/kcg-backend-deploy.timer new file mode 100644 index 0000000..0bd18fd --- /dev/null +++ b/deploy/kcg-backend-deploy.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Poll for KCG Backend deploy (JAR update check) + +[Timer] +OnBootSec=60 +OnUnitActiveSec=30 + +[Install] +WantedBy=timers.target