From c88848663520ce166f1b44d603087120cd5a9e64 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Mon, 29 Jun 2026 10:55:40 +0900 Subject: [PATCH] refactor(deploy): minimize downtime and fix health check subpath (CLAUDE.md guidelines) --- .gitea/workflows/deploy-prod.yml | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/.gitea/workflows/deploy-prod.yml b/.gitea/workflows/deploy-prod.yml index 2fd5214..fcfaa1c 100644 --- a/.gitea/workflows/deploy-prod.yml +++ b/.gitea/workflows/deploy-prod.yml @@ -107,20 +107,15 @@ jobs: chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -H ${{ env.DEPLOY_HOST }} >> ~/.ssh/known_hosts 2>/dev/null || true - - name: Stop Service and Create Backup + - name: Create Backup run: | - echo "๐Ÿ“ฆ Stopping service and creating backup..." + echo "๐Ÿ“ฆ Creating backup of current deployment..." ssh -i ~/.ssh/id_ed25519 ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} << 'EOF' set -e BACKUP_DIR="/home/kjh2064/quantengine_backup" BACKUP_NAME="quantengine_$(date +%Y%m%d_%H%M%S)" - # Stop service - echo "โน๏ธ Stopping quantengine service..." - sudo systemctl stop ${{ env.SERVICE_NAME }} - sleep 2 - - # Create backup + # Create backup without stopping the service (minimize downtime) mkdir -p $BACKUP_DIR if [ -d ${{ env.DEPLOY_PATH }} ]; then cp -r ${{ env.DEPLOY_PATH }} "$BACKUP_DIR/$BACKUP_NAME" @@ -184,19 +179,20 @@ jobs: rm -rf /tmp/quant-deploy EOF - - name: Start Service + - name: Restart Service run: | - echo "๐Ÿ”„ Starting quantengine service..." + echo "๐Ÿ”„ Restarting quantengine service to apply changes (Downtime minimal)..." ssh -i ~/.ssh/id_ed25519 ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} << 'EOF' set -e - # Start service - sudo systemctl start ${{ env.SERVICE_NAME }} + # Restart service + echo "โน๏ธ Restarting quantengine service..." + sudo systemctl restart ${{ env.SERVICE_NAME }} sleep 3 # Check status if sudo systemctl is-active --quiet ${{ env.SERVICE_NAME }}; then - echo "โœ… ${{ env.SERVICE_NAME }} started successfully" + echo "โœ… ${{ env.SERVICE_NAME }} restarted successfully" sudo systemctl status ${{ env.SERVICE_NAME }} | head -5 else echo "โŒ ${{ env.SERVICE_NAME }} failed to start" @@ -209,13 +205,13 @@ jobs: run: | echo "๐Ÿงช Running health checks..." - # Wait for service to be ready (localhost:5000 through Nginx) + # Wait for service to be ready (localhost:5000/quant/ through Nginx/Kestrel) for i in {1..30}; do HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \ - "http://127.0.0.1:5000/" || echo "000") + "http://127.0.0.1:5000/quant/" || echo "000") if [ "$HTTP_CODE" = "200" ]; then - echo "โœ… Health check passed (HTTP $HTTP_CODE at localhost:5000)" + echo "โœ… Health check passed (HTTP $HTTP_CODE at localhost:5000/quant/)" break fi