feat(ci): staging部署脚本增加本地自动回滚能力 #385

Merged
xiaoxia merged 4 commits from feat/staging-auto-rollback into develop 2026-07-16 21:26:44 +08:00
Owner

背景

当前staging部署只有CI侧公网健康检查失败后的SSH回滚(第二道防线)。但如果容器刚启动就挂了(比如启动命令错、依赖缺失),要等CI侧健康检查超时才回滚,浪费时间。

改动

scripts/ci_staging_deploy.sh(staging服务器本地执行的部署脚本)中增加本地自动回滚能力:

  1. 部署前快照:记录API/Worker/Web三个服务当前运行的镜像tag
  2. rollback()函数:健康检查不通过时,用旧镜像重新启动容器
  3. 触发点
    • 容器docker run失败 → 立即回滚
    • API健康检查超时(120s)→ 自动回滚
    • Web健康检查超时(30s)→ 自动回滚
  4. 数据库迁移失败不自动回滚:数据安全考虑,需人工介入判断
  5. 支持SKIP_ROLLBACK=true:调试时可关闭自动回滚

两道防线

  • 第一道:staging服务器本地回滚(快,容器启动阶段就失败的场景)
  • 第二道:CI侧公网健康检查回滚(全链路验证,服务真的对外可用)
## 背景 当前staging部署只有CI侧公网健康检查失败后的SSH回滚(第二道防线)。但如果容器刚启动就挂了(比如启动命令错、依赖缺失),要等CI侧健康检查超时才回滚,浪费时间。 ## 改动 在`scripts/ci_staging_deploy.sh`(staging服务器本地执行的部署脚本)中增加本地自动回滚能力: 1. **部署前快照**:记录API/Worker/Web三个服务当前运行的镜像tag 2. **rollback()函数**:健康检查不通过时,用旧镜像重新启动容器 3. **触发点**: - 容器`docker run`失败 → 立即回滚 - API健康检查超时(120s)→ 自动回滚 - Web健康检查超时(30s)→ 自动回滚 4. **数据库迁移失败不自动回滚**:数据安全考虑,需人工介入判断 5. **支持SKIP_ROLLBACK=true**:调试时可关闭自动回滚 ## 两道防线 - 第一道:staging服务器本地回滚(快,容器启动阶段就失败的场景) - 第二道:CI侧公网健康检查回滚(全链路验证,服务真的对外可用)
xiaoxia force-pushed feat/staging-auto-rollback from f544ee501f to e838b3595e 2026-07-16 08:49:01 +08:00 Compare
xiaoxia force-pushed feat/staging-auto-rollback from e838b3595e to 5a34e55134 2026-07-16 09:06:54 +08:00 Compare
xiaoxia added 1 commit 2026-07-16 09:22:10 +08:00
feat(ci): staging部署脚本增加本地自动回滚能力- 部署前记录当前三个服务的镜像版本(回滚目标)- 新增rollback()函数:容器启动失败/健康检查不通过时自动回滚- 本地健康检查失败立即回滚,不用等CI侧SSH回滚(更快)- 迁移失败不自动回滚(数据安全考虑,需人工介入)- 支持SKIP_ROLLBACK环境变量关闭自动回滚- 与CI侧公网健康检查回滚形成两道防线
CI Build & Deploy Pipeline / Build Staging API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (push) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (push) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m40s
CI/CD Pipeline / Frontend Lint (push) Successful in 1m41s
CI Build & Deploy Pipeline / Build Production API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (push) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (push) Successful in 3m0s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m8s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 13m16s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 13m17s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m35s
CI/CD Pipeline / Integration Tests (push) Successful in 1m34s
6d4b9a0e51
xiaoxia force-pushed feat/staging-auto-rollback from 5a34e55134 to 6d4b9a0e51 2026-07-16 09:22:10 +08:00 Compare
xiaoxia added 1 commit 2026-07-16 09:50:35 +08:00
chore(ci): retry CI run to avoid flaky runner
CI Build & Deploy Pipeline / Build Staging API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (push) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Successful in 1m13s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m25s
CI/CD Pipeline / Unit Tests (push) Successful in 3m38s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m9s
CI Build & Deploy Pipeline / Build Production API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 15m43s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 16m39s
CI/CD Pipeline / Integration Tests (push) Successful in 2m16s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m4s
58e4e4a18d
xiaoxia added 1 commit 2026-07-16 20:07:35 +08:00
Merge remote-tracking branch 'origin/develop' into feat/staging-auto-rollback
CI Build & Deploy Pipeline / Build Staging API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (push) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Successful in 2m11s
CI/CD Pipeline / Validate Code Quality And Tests (push) Successful in 7m10s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m0s
CI/CD Pipeline / Unit Tests (push) Successful in 8m21s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 6m44s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 8m6s
CI Build & Deploy Pipeline / Build Production API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (push) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (push) Successful in 5m32s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m59s
31d8ce765f
auto-approve-bot approved these changes 2026-07-16 20:52:42 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia added 1 commit 2026-07-16 21:05:46 +08:00
Merge remote-tracking branch 'origin/develop' into feat/staging-auto-rollback
CI Build & Deploy Pipeline / Build Staging API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Successful in 1m56s
CI Build & Deploy Pipeline / Build Production API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (push) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Validate Code Quality And Tests (push) Successful in 7m37s
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m28s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 4m50s
CI/CD Pipeline / Unit Tests (push) Successful in 6m47s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m39s
CI/CD Pipeline / Integration Tests (push) Successful in 2m3s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m47s
dec873d13b
xiaoxia merged commit 4c662cca32 into develop 2026-07-16 21:26:44 +08:00
Sign in to join this conversation.