fix: 修正 CI deploy 流程
Some checks failed
CI/CD Pipeline / Code Quality (push) Successful in 14s
CI/CD Pipeline / Unit Tests (push) Successful in 8s
CI/CD Pipeline / Build & Deploy Test (push) Has been skipped
CI/CD Pipeline / Build & Deploy Production (push) Failing after 58s

- 备份镜像提前到 build 前执行,确保回滚的是旧版本
- health check 改用 top-level await 避免 bun 异步退出时序问题
- 移除不必要的 --force-recreate(compose 已自动检测镜像变化)
This commit is contained in:
Wang Zhuoxuan 2026-04-18 03:43:44 +08:00
parent af55992627
commit 686f5ea912

View File

@ -69,7 +69,7 @@ jobs:
run: | run: |
sleep 10 sleep 10
for i in {1..5}; do 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!" echo "Test environment is healthy!"
exit 0 exit 0
fi fi
@ -92,22 +92,20 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 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 - name: Build production image
run: docker build -t duoqi-api:prod . run: docker build -t duoqi-api:prod .
- name: Deploy production - name: Deploy production
run: | run: docker compose -f /opt/duoqi-api/docker-compose.yml up -d --no-build api-prod
# 备份当前镜像(用于回滚)
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
- name: Health check - name: Health check
run: | run: |
sleep 15 sleep 15
for i in {1..5}; do 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!" echo "Production deployment successful!"
exit 0 exit 0
fi fi
@ -118,7 +116,7 @@ jobs:
# 健康检查失败,自动回滚 # 健康检查失败,自动回滚
echo "Health check failed! Rolling back..." echo "Health check failed! Rolling back..."
docker tag duoqi-api:rollback duoqi-api:prod 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 exit 1
- name: Cleanup - name: Cleanup