ci: 添加每日定时巡检流水线,生产+staging全自动健康检查 #191

Merged
xiaoxia merged 1 commits from feat/add-daily-health-check into develop 2026-07-09 11:04:20 +08:00
Owner

概述

新增每日定时巡检流水线,每天凌晨3:00自动跑全量测试,主动发现生产/staging环境的问题。

巡检内容清单

1. 生产环境冒烟测试 (Production Smoke Test)

  • /health 健康检查端点
  • API Docs 端点(生产禁用为正常)
  • 未授权鉴权验证(返回401/403)
  • 前端页面可访问性(SPA路由验证:首页/dashboard/assets/generate/templates等)
  • 素材列表、生成任务列表、订阅信息等只读接口
  • 🔒 安全只读模式,不创建测试数据
  • 🔒 使用 PROD_E2E_TOKEN secret 进行鉴权测试(可选)
  • 🔒 CLEANUP_ENABLED=0 确保不修改生产数据

2. Staging API 集成测试 (Staging API Integration Tests)

  • API 全量冒烟测试(api_smoke_test.sh 全模块)
    • 健康检查、鉴权、剪辑计划、模板、素材库、诊断、生成任务、订阅、其他核心接口、Nginx路由
  • Playwright API 测试套件
    • test_auth.spec.ts, test_asset.spec.ts, test_project.spec.ts
  • 测试账号: 18314979086@163.com
  • 自动清理测试数据

3. Staging 浏览器 E2E (Staging Browser E2E)

  • auth.spec.ts - 登录鉴权
  • auth-guard.spec.ts - 路由守卫
  • core-upload.spec.ts - 上传功能
  • core-generation.spec.ts - 生成功能
  • core-titles.spec.ts - 标题功能

4. 性能基线巡检 (Performance Baseline Check)

  • 核心接口(500ms阈值):登录、获取当前用户、项目列表、素材列表、模板列表、剪辑计划列表、生成任务列表、订阅信息
  • 普通接口(1000ms阈值):音色列表
  • 基础接口(200ms阈值):健康检查
  • ⚠️ 警告阈值提醒
  • 失败阈值导致流水线失败
  • 📊 输出每个接口的响应时间

5. 统一汇总报告

  • 📋 每日巡检报告总览
  • / 各模块状态一目了然
  • ⏱️ 巡检时间戳

触发方式

  • 定时触发:每天北京时间凌晨 3:00(cron: 0 19 * * *,UTC时间)
  • 手动触发:支持 workflow_dispatch 随时手动执行

架构设计

daily-check workflow
├── production-smoke    (并行)  生产冒烟测试
├── staging-api-tests   (并行)  Staging API集成测试
├── staging-e2e         (并行)  Staging浏览器E2E
├── performance-check   (并行)  性能基线巡检
└── daily-report        (汇总)  统一报告
  • 4个巡检任务并行执行,提升效率
  • 全部完成后生成统一汇总报告
  • 任何一步失败,整体流水线标记为失败
  • Gitea 自动发送邮件通知给仓库管理员

安全设计

  • 生产环境默认只读,不注册新用户
  • 生产环境无 EXISTING_TOKEN 时只跑 health + nginx 模块
  • 生产环境 CLEANUP_ENABLED=0
  • 敏感信息通过 Gitea Secrets 传递(PROD_E2E_TOKEN)
  • Staging 环境完整测试,自动清理数据

变更文件

  • .gitea/workflows/daily-check.yml (新增) - 每日巡检流水线配置
  • tests/e2e/api_smoke_test.sh (更新) - 新增 SMOKE_ENV 环境预设

api_smoke_test.sh 新增功能

  • SMOKE_ENV=production - 生产环境快捷预设(安全只读模式)
  • SMOKE_ENV=staging - Staging 环境快捷预设
  • 生产模式自动启用安全防护(不注册、不清理、只读模块)
  • 清晰的生产模式警告输出

验证

  • YAML 语法正确
  • 使用 runs-on: saas 与现有流水线一致
  • 支持 workflow_dispatch 手动触发
  • 敏感信息通过 secrets 传递,无硬编码
  • 生产环境幂等安全(只读操作)
  • 不影响现有 ci-cd.yml 流水线
  • 总耗时预估 < 15 分钟(并行执行,最长任务约12分钟)
## 概述 新增每日定时巡检流水线,每天凌晨3:00自动跑全量测试,主动发现生产/staging环境的问题。 ## 巡检内容清单 ### 1. 生产环境冒烟测试 (Production Smoke Test) - ✅ `/health` 健康检查端点 - ✅ API Docs 端点(生产禁用为正常) - ✅ 未授权鉴权验证(返回401/403) - ✅ 前端页面可访问性(SPA路由验证:首页/dashboard/assets/generate/templates等) - ✅ 素材列表、生成任务列表、订阅信息等只读接口 - 🔒 安全只读模式,不创建测试数据 - 🔒 使用 `PROD_E2E_TOKEN` secret 进行鉴权测试(可选) - 🔒 CLEANUP_ENABLED=0 确保不修改生产数据 ### 2. Staging API 集成测试 (Staging API Integration Tests) - ✅ API 全量冒烟测试(api_smoke_test.sh 全模块) - 健康检查、鉴权、剪辑计划、模板、素材库、诊断、生成任务、订阅、其他核心接口、Nginx路由 - ✅ Playwright API 测试套件 - test_auth.spec.ts, test_asset.spec.ts, test_project.spec.ts - ✅ 测试账号: 18314979086@163.com - ✅ 自动清理测试数据 ### 3. Staging 浏览器 E2E (Staging Browser E2E) - ✅ auth.spec.ts - 登录鉴权 - ✅ auth-guard.spec.ts - 路由守卫 - ✅ core-upload.spec.ts - 上传功能 - ✅ core-generation.spec.ts - 生成功能 - ✅ core-titles.spec.ts - 标题功能 ### 4. 性能基线巡检 (Performance Baseline Check) - ✅ 核心接口(500ms阈值):登录、获取当前用户、项目列表、素材列表、模板列表、剪辑计划列表、生成任务列表、订阅信息 - ✅ 普通接口(1000ms阈值):音色列表 - ✅ 基础接口(200ms阈值):健康检查 - ⚠️ 警告阈值提醒 - ❌ 失败阈值导致流水线失败 - 📊 输出每个接口的响应时间 ### 5. 统一汇总报告 - 📋 每日巡检报告总览 - ✅/❌ 各模块状态一目了然 - ⏱️ 巡检时间戳 ## 触发方式 - **定时触发**:每天北京时间凌晨 3:00(cron: 0 19 * * *,UTC时间) - **手动触发**:支持 workflow_dispatch 随时手动执行 ## 架构设计 ``` daily-check workflow ├── production-smoke (并行) 生产冒烟测试 ├── staging-api-tests (并行) Staging API集成测试 ├── staging-e2e (并行) Staging浏览器E2E ├── performance-check (并行) 性能基线巡检 └── daily-report (汇总) 统一报告 ``` - 4个巡检任务并行执行,提升效率 - 全部完成后生成统一汇总报告 - 任何一步失败,整体流水线标记为失败 - Gitea 自动发送邮件通知给仓库管理员 ## 安全设计 - 生产环境默认只读,不注册新用户 - 生产环境无 EXISTING_TOKEN 时只跑 health + nginx 模块 - 生产环境 CLEANUP_ENABLED=0 - 敏感信息通过 Gitea Secrets 传递(PROD_E2E_TOKEN) - Staging 环境完整测试,自动清理数据 ## 变更文件 - `.gitea/workflows/daily-check.yml` **(新增)** - 每日巡检流水线配置 - `tests/e2e/api_smoke_test.sh` **(更新)** - 新增 SMOKE_ENV 环境预设 ## api_smoke_test.sh 新增功能 - `SMOKE_ENV=production` - 生产环境快捷预设(安全只读模式) - `SMOKE_ENV=staging` - Staging 环境快捷预设 - 生产模式自动启用安全防护(不注册、不清理、只读模块) - 清晰的生产模式警告输出 ## 验证 - ✅ YAML 语法正确 - ✅ 使用 `runs-on: saas` 与现有流水线一致 - ✅ 支持 workflow_dispatch 手动触发 - ✅ 敏感信息通过 secrets 传递,无硬编码 - ✅ 生产环境幂等安全(只读操作) - ✅ 不影响现有 ci-cd.yml 流水线 - ✅ 总耗时预估 < 15 分钟(并行执行,最长任务约12分钟)
xiaoxia added 1 commit 2026-07-09 10:56:28 +08:00
ci: 添加每日定时巡检流水线,生产+staging全自动健康检查
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1h58m3s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1h58m3s
b700504d58
- 新增 .gitea/workflows/daily-check.yml 每日巡检流水线
  - 每天北京时间凌晨3:00自动执行(cron: 0 19 * * * UTC)
  - 支持手动触发(workflow_dispatch)
  - 4大巡检模块:生产冒烟、Staging API、Staging E2E、性能基线
  - 统一汇总报告,一目了然
  - 失败自动标记流水线失败,Gitea发送通知

- 更新 tests/e2e/api_smoke_test.sh
  - 新增 SMOKE_ENV=production 环境预设
  - 生产环境自动启用安全只读模式
  - 无EXISTING_TOKEN时默认只跑 health+nginx 模块
  - 有token时跑只读模块(assets/generation/subscription/nginx)
  - CLEANUP_ENABLED 默认为 0(生产安全)
  - 新增 SMOKE_ENV=staging 快捷预设
xiaoxia merged commit d39f8139df into develop 2026-07-09 11:04:20 +08:00
Sign in to join this conversation.