diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 8c8a0fd..17c92b1 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -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()