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>
This commit is contained in:
parent
d85b47fa08
commit
c93f916959
37
deploy/deploy_itms_prod.sh
Normal file
37
deploy/deploy_itms_prod.sh
Normal file
@ -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"
|
||||
Loading…
Reference in New Issue
Block a user