From c93f9169599ac573ce1d189125d7fc2bd4632c2a Mon Sep 17 00:00:00 2001 From: itms-merge-dev Date: Sun, 19 Jul 2026 15:39:43 +0900 Subject: [PATCH] =?UTF-8?q?ci(itms):=20dev->prod=20front=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=20=EC=8A=B9=EA=B2=A9=20=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80=20(deploy=5Fitms=5Fprod.sh)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deploy_server.py itms 블록의 dev health 게이트 통과 후 호출. front war tar-over-ssh → prod(itms.wise.ai.kr) 재기동 → prod health. Co-Authored-By: Claude Fable 5 --- deploy/deploy_itms_prod.sh | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 deploy/deploy_itms_prod.sh diff --git a/deploy/deploy_itms_prod.sh b/deploy/deploy_itms_prod.sh new file mode 100644 index 00000000..23b44fe4 --- /dev/null +++ b/deploy/deploy_itms_prod.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# ITMS 운영 승격 (dev -> prod, front-only, 무빌드 tar-over-ssh). +# deploy_server.py itms 블록의 dev health 게이트 통과 후에만 호출된다. +# 실패 시 exit!=0 (운영 미반영 — 직전 war 유지). +set -euo pipefail + +KEY=/var/lib/jenkins/.ssh/id_ed25519_prod +PROD_HOST=211.37.173.197 +PROD_PORT=9271 +PROD_DOMAIN=itms.wise.ai.kr +SRC_WAR=/opt/itms/artifacts/current/itms-front.war +H=$(basename "$(readlink -f /opt/itms/artifacts/current)") +SSH="ssh -p ${PROD_PORT} -i ${KEY} -o StrictHostKeyChecking=no -o ConnectTimeout=20" + +echo "[prod-promote] target=${PROD_HOST} hash=${H}" + +# 1) prod 디렉터리 준비 +${SSH} root@${PROD_HOST} "mkdir -p /opt/itms/artifacts/${H} /etc/itms" + +# 2) front war 전송 (무빌드) +scp -P ${PROD_PORT} -i ${KEY} -o StrictHostKeyChecking=no "${SRC_WAR}" \ + root@${PROD_HOST}:/opt/itms/artifacts/${H}/itms-front.war + +# 3) 심볼릭 갱신 + 재기동 + 헬스 게이트 (Host 헤더 필수) +${SSH} root@${PROD_HOST} " + ln -sfn /opt/itms/artifacts/${H} /opt/itms/artifacts/current && + systemctl restart itms-front && + for i in \$(seq 1 30); do + sleep 3 + code=\$(curl -s -m5 -o /dev/null -w '%{http_code}' -H 'Host: ${PROD_DOMAIN}' http://127.0.0.1:11020/) + if [ \"\$code\" = '200' ] || [ \"\$code\" = '301' ] || [ \"\$code\" = '302' ]; then + echo \"[prod-promote] health OK (\$code)\"; exit 0 + fi + done + echo '[prod-promote] health FAIL'; systemctl is-active itms-front; exit 1 +" +echo "[prod-promote] done"