itsm_ysm/deploy/deploy_itms_prod.sh
itms-merge-dev c93f916959 ci(itms): dev->prod front 자동 승격 스크립트 추가 (deploy_itms_prod.sh)
deploy_server.py itms 블록의 dev health 게이트 통과 후 호출.
front war tar-over-ssh → prod(itms.wise.ai.kr) 재기동 → prod health.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 15:39:43 +09:00

38 lines
1.5 KiB
Bash

#!/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"