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
|
||||
done
|
||||
|
||||
# ═══ Prediction (FastAPI → redis-211) ═══
|
||||
- name: Deploy prediction via SSH
|
||||
env:
|
||||
DEPLOY_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||
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"
|
||||
# ═══ Prediction (FastAPI) — CI/CD 제외, 수동 배포 ═══
|
||||
# ssh redis-211 에서 수동 배포:
|
||||
# scp prediction/*.py redis-211:/home/apps/kcg-prediction/
|
||||
# ssh redis-211 "sudo systemctl restart kcg-prediction"
|
||||
|
||||
- name: Cleanup
|
||||
if: always()
|
||||
|
||||
불러오는 중...
Reference in New Issue
Block a user