From 89b81bc2415843aca2b65011be2e54173c3db34c Mon Sep 17 00:00:00 2001 From: htlee Date: Tue, 31 Mar 2026 09:59:33 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20Prediction=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=EC=A0=9C=EA=B1=B0=20=E2=80=94=20=EC=88=98?= =?UTF-8?q?=EB=8F=99=20=EB=B0=B0=ED=8F=AC=EB=A1=9C=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit prediction/ 변경 시 ssh redis-211으로 수동 scp + restart CI/CD는 Frontend + Backend만 자동 배포 Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitea/workflows/deploy.yml | 73 ++----------------------------------- 1 file changed, 4 insertions(+), 69 deletions(-) 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()