feat(ci): Staging部署接入健康检查+自动回滚框架 #323

Merged
xiaoxia merged 4 commits from feat/staging-healthcheck-ci-v2 into develop 2026-07-14 23:36:51 +08:00
Owner

变更内容

新增文件

  • scripts/ci_staging_healthcheck.sh - CI专用健康检查+自动回滚脚本(适配Watchtower模式)
  • scripts/deploy_notify.py - 部署结果通知脚本(飞书卡片格式,支持 success/failure/rollback 三种状态)

修改文件

  • .gitea/workflows/ci-cd.yml - deploy-staging阶段的smoke test替换为健康检查+自动回滚

功能说明

健康检查

  • 检查 API /health 端点
  • 检查 Web 首页
  • 检查 API /docs 文档端点
  • 检查登录 API(业务逻辑验证)
  • 超时时间:120秒(含Watchtower等待90秒+健康检查轮询)

自动回滚

  • 部署前记录当前 :staging 镜像的 digest
  • 健康检查失败时,自动把 :staging tag 改回旧版本
  • Watchtower 检测到 tag 变化后自动回滚
  • 回滚后再次验证健康状态

通知机制

  • 通过 CI_NOTIFY_WEBHOOK 发送飞书卡片通知
  • 支持三种状态:成功 / 失败 / 已回滚
  • 包含分支、commit、构建详情链接

环境变量依赖

  • REGISTRY_TOKEN - 已有,回滚操作镜像推送需要
  • CI_NOTIFY_WEBHOOK - 通知用,未配置则自动跳过(不影响部署)

验证

  • PR CI全绿(Validate/Unit/Integration/Frontend Lint都过)
  • develop合并后第一次部署,验证健康检查通过
  • 模拟失败场景,验证自动回滚(后续P2)
## 变更内容 ### 新增文件 - `scripts/ci_staging_healthcheck.sh` - CI专用健康检查+自动回滚脚本(适配Watchtower模式) - `scripts/deploy_notify.py` - 部署结果通知脚本(飞书卡片格式,支持 success/failure/rollback 三种状态) ### 修改文件 - `.gitea/workflows/ci-cd.yml` - deploy-staging阶段的smoke test替换为健康检查+自动回滚 ## 功能说明 ### 健康检查 - 检查 API `/health` 端点 - 检查 Web 首页 - 检查 API `/docs` 文档端点 - 检查登录 API(业务逻辑验证) - 超时时间:120秒(含Watchtower等待90秒+健康检查轮询) ### 自动回滚 - 部署前记录当前 `:staging` 镜像的 digest - 健康检查失败时,自动把 `:staging` tag 改回旧版本 - Watchtower 检测到 tag 变化后自动回滚 - 回滚后再次验证健康状态 ### 通知机制 - 通过 `CI_NOTIFY_WEBHOOK` 发送飞书卡片通知 - 支持三种状态:成功 / 失败 / 已回滚 - 包含分支、commit、构建详情链接 ## 环境变量依赖 - `REGISTRY_TOKEN` - 已有,回滚操作镜像推送需要 - `CI_NOTIFY_WEBHOOK` - 通知用,未配置则自动跳过(不影响部署) ## 验证 - [ ] PR CI全绿(Validate/Unit/Integration/Frontend Lint都过) - [ ] develop合并后第一次部署,验证健康检查通过 - [ ] 模拟失败场景,验证自动回滚(后续P2)
auto-approve-bot approved these changes 2026-07-14 18:33:53 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-14 18:36:45 +08:00
xiaoxia closed this pull request 2026-07-14 21:33:43 +08:00
xiaoxia deleted branch feat/staging-healthcheck-ci-v2 2026-07-14 21:33:43 +08:00
xiaoxia reopened this pull request 2026-07-14 21:34:55 +08:00
xiaoxia added 4 commits 2026-07-14 22:51:02 +08:00
ci: re-trigger CI run after cache cleanup
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m50s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 3m14s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 3m16s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m24s
CI/CD Pipeline / Unit Tests (push) Successful in 1m47s
CI/CD Pipeline / Validate Code Quality And Tests (push) Successful in 2m31s
CI/CD Pipeline / Frontend Lint (push) Successful in 2m57s
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Integration Tests (push) Successful in 1m14s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m52s
CI/CD Pipeline / Build Staging API Image (push) Successful in 5m16s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 22m32s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 1m48s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 4m6s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 4m57s
84db18a959
xiaoxia force-pushed feat/staging-healthcheck-ci-v2 from c9863f3546 to 84db18a959 2026-07-14 22:51:02 +08:00 Compare
xiaoxia merged commit 84db18a959 into develop 2026-07-14 23:36:51 +08:00
Sign in to join this conversation.