fix: 修正 CI deploy 流程
- 备份镜像提前到 build 前执行,确保回滚的是旧版本 - health check 改用 top-level await 避免 bun 异步退出时序问题 - 移除不必要的 --force-recreate(compose 已自动检测镜像变化)
This commit is contained in:
parent
af55992627
commit
686f5ea912
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user