From 686f5ea9128d646d4cbed2107cc68842ee992695 Mon Sep 17 00:00:00 2001 From: Wang Zhuoxuan Date: Sat, 18 Apr 2026 03:43:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=20CI=20deploy=20?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 备份镜像提前到 build 前执行,确保回滚的是旧版本 - health check 改用 top-level await 避免 bun 异步退出时序问题 - 移除不必要的 --force-recreate(compose 已自动检测镜像变化) --- .gitea/workflows/deploy.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index fdac6f8..a5a56d0 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -69,7 +69,7 @@ jobs: run: | sleep 10 for i in {1..5}; do - if bun -e "fetch('http://localhost:3001/v1/health').then(r=>r.ok?process.exit(0):process.exit(1)).catch(()=>process.exit(1))"; then + if bun -e "try{const r=await fetch('http://localhost:3001/v1/health');process.exit(r.ok?0:1)}catch{process.exit(1)}"; then echo "Test environment is healthy!" exit 0 fi @@ -92,22 +92,20 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Backup current image + run: docker tag duoqi-api:prod duoqi-api:rollback 2>/dev/null || true + - name: Build production image run: docker build -t duoqi-api:prod . - name: Deploy production - run: | - # 备份当前镜像(用于回滚) - docker tag duoqi-api:prod duoqi-api:rollback 2>/dev/null || true - - # 滚动更新 - docker compose -f /opt/duoqi-api/docker-compose.yml up -d --no-build api-prod + run: docker compose -f /opt/duoqi-api/docker-compose.yml up -d --no-build api-prod - name: Health check run: | sleep 15 for i in {1..5}; do - if bun -e "fetch('http://localhost:3000/v1/health').then(r=>r.ok?process.exit(0):process.exit(1)).catch(()=>process.exit(1))"; then + if bun -e "try{const r=await fetch('http://localhost:3000/v1/health');process.exit(r.ok?0:1)}catch{process.exit(1)}"; then echo "Production deployment successful!" exit 0 fi @@ -118,7 +116,7 @@ jobs: # 健康检查失败,自动回滚 echo "Health check failed! Rolling back..." docker tag duoqi-api:rollback duoqi-api:prod - docker compose -f /opt/duoqi-api/docker-compose.yml up -d --no-build api-prod + docker compose -f /opt/duoqi-api/docker-compose.yml up -d --force-recreate --no-build api-prod exit 1 - name: Cleanup