guardia-itsm/deploy/guardia_deploy.sh
2026-05-30 23:02:43 +09:00

49 lines
1.4 KiB
Bash

#!/bin/bash
# GUARDiA ITSM 자동 배포 스크립트 (Deploy Webhook / CI 트리거 시 실행)
# 경로: /opt/guardia/app/deploy/guardia_deploy.sh
set -euo pipefail
LOG=/opt/guardia/logs/deploy.log
APP=/opt/guardia/app
REPO=http://zio:Zio%40Admin2026%21@localhost:3000/zio/guardia-itsm.git
SRC=/opt/guardia/src
echo "[$(date '+%Y-%m-%d %H:%M:%S')] === GUARDiA 배포 시작 ===" >> $LOG
# 1. 소스 갱신
if [ ! -d "$SRC/.git" ]; then
echo "[$(date)] git clone..." >> $LOG
git clone $REPO $SRC
else
echo "[$(date)] git pull..." >> $LOG
cd $SRC && git pull origin main
fi
echo "[$(date)] 소스 갱신 완료" >> $LOG
# 2. 새 파일 복사 (test_, __pycache__ 제외)
rsync -av --exclude="__pycache__" --exclude="test_*.py" \
--exclude="*.db" --exclude="*.bak" --exclude=".git" \
$SRC/ $APP/ >> $LOG 2>&1
echo "[$(date)] 파일 복사 완료" >> $LOG
# 3. 패키지 업데이트
if [ -f "$SRC/requirements.txt" ]; then
/opt/guardia/venv/bin/pip install -r $SRC/requirements.txt -q >> $LOG 2>&1
echo "[$(date)] 패키지 업데이트 완료" >> $LOG
fi
# 4. 서비스 재시작
systemctl restart guardia
sleep 5
# 5. 헬스체크
HTTP=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8001/docs 2>/dev/null)
if [ "$HTTP" = "200" ]; then
echo "[$(date)] 배포 성공 (HTTP $HTTP)" >> $LOG
else
echo "[$(date)] 배포 실패 (HTTP $HTTP)" >> $LOG
exit 1
fi
echo "[$(date)] === GUARDiA 배포 완료 ===" >> $LOG