ci: Prediction 자동 배포 제거 — 수동 배포로 전환
prediction/ 변경 시 ssh redis-211으로 수동 scp + restart CI/CD는 Frontend + Backend만 자동 배포 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
부모
bf412cc897
커밋
89b81bc241
@ -148,75 +148,10 @@ jobs:
|
|||||||
sleep 10
|
sleep 10
|
||||||
done
|
done
|
||||||
|
|
||||||
# ═══ Prediction (FastAPI → redis-211) ═══
|
# ═══ Prediction (FastAPI) — CI/CD 제외, 수동 배포 ═══
|
||||||
- name: Deploy prediction via SSH
|
# ssh redis-211 에서 수동 배포:
|
||||||
env:
|
# scp prediction/*.py redis-211:/home/apps/kcg-prediction/
|
||||||
DEPLOY_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
# ssh redis-211 "sudo systemctl restart kcg-prediction"
|
||||||
PRED_HOST: 192.168.1.18
|
|
||||||
PRED_PORT: 32023
|
|
||||||
run: |
|
|
||||||
mkdir -p ~/.ssh
|
|
||||||
printf '%s\n' "$DEPLOY_KEY" > ~/.ssh/id_deploy
|
|
||||||
chmod 600 ~/.ssh/id_deploy
|
|
||||||
|
|
||||||
SSH_OPTS="-i ~/.ssh/id_deploy -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ServerAliveInterval=15 -p $PRED_PORT"
|
|
||||||
SCP_OPTS="-i ~/.ssh/id_deploy -o StrictHostKeyChecking=no -P $PRED_PORT"
|
|
||||||
|
|
||||||
REMOTE_DIR=/home/apps/kcg-prediction
|
|
||||||
|
|
||||||
# 코드 전송 (rsync 대체: tar + scp)
|
|
||||||
tar czf /tmp/prediction.tar.gz -C prediction --exclude='__pycache__' --exclude='venv' --exclude='.env' .
|
|
||||||
for attempt in 1 2 3; do
|
|
||||||
echo "SCP prediction attempt $attempt/3..."
|
|
||||||
if scp $SCP_OPTS /tmp/prediction.tar.gz root@$PRED_HOST:/tmp/prediction.tar.gz; then break; fi
|
|
||||||
[ "$attempt" -eq 3 ] && { echo "ERROR: SCP failed"; exit 1; }
|
|
||||||
sleep 10
|
|
||||||
done
|
|
||||||
|
|
||||||
# systemd 서비스 파일 전송
|
|
||||||
scp $SCP_OPTS deploy/kcg-prediction.service root@$PRED_HOST:/tmp/kcg-prediction.service
|
|
||||||
|
|
||||||
# 원격 설치 + 재시작 (단일 SSH — tar.gz는 SCP에서 이미 전송됨)
|
|
||||||
ssh $SSH_OPTS root@$PRED_HOST bash -s << 'SCRIPT'
|
|
||||||
set -e
|
|
||||||
REMOTE_DIR=/home/apps/kcg-prediction
|
|
||||||
mkdir -p $REMOTE_DIR
|
|
||||||
cd $REMOTE_DIR
|
|
||||||
|
|
||||||
# 코드 배포
|
|
||||||
tar xzf /tmp/prediction.tar.gz -C $REMOTE_DIR
|
|
||||||
|
|
||||||
# venv + 의존성
|
|
||||||
python3 -m venv venv 2>/dev/null || true
|
|
||||||
venv/bin/pip install -r requirements.txt -q
|
|
||||||
|
|
||||||
# SELinux 컨텍스트 (Rocky Linux)
|
|
||||||
chcon -R -t bin_t venv/bin/ 2>/dev/null || true
|
|
||||||
|
|
||||||
# systemd 서비스 갱신
|
|
||||||
if ! diff -q /tmp/kcg-prediction.service /etc/systemd/system/kcg-prediction.service >/dev/null 2>&1; then
|
|
||||||
cp /tmp/kcg-prediction.service /etc/systemd/system/kcg-prediction.service
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable kcg-prediction
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 재시작
|
|
||||||
systemctl restart kcg-prediction
|
|
||||||
|
|
||||||
# health 확인 (60초 — 초기 로드에 ~30초 소요)
|
|
||||||
for i in $(seq 1 12); do
|
|
||||||
if curl -sf http://localhost:8001/health > /dev/null 2>&1; then
|
|
||||||
echo "Prediction healthy (attempt ${i})"
|
|
||||||
rm -f /tmp/prediction.tar.gz /tmp/kcg-prediction.service
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
echo "WARNING: Prediction health timeout (서비스는 시작됨, 초기 로드 진행 중)"
|
|
||||||
systemctl is-active kcg-prediction && echo "Service is active"
|
|
||||||
rm -f /tmp/prediction.tar.gz /tmp/kcg-prediction.service
|
|
||||||
SCRIPT
|
|
||||||
echo "Prediction deployment completed"
|
|
||||||
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
if: always()
|
if: always()
|
||||||
|
|||||||
불러오는 중...
Reference in New Issue
Block a user