ci: 架构精简 - 合并4个workflow为2个,抽取公共步骤为脚本 #605

Merged
auto-approve-bot merged 5 commits from ci/arch-refactor into develop 2026-07-19 19:02:09 +08:00
Owner

#603 CI架构精简

变更内容

配置合并

  • ci-cd.yml + ci-build.yml → ci-pipeline.yml:14个job统一到一条主Pipeline,一次提交一组结果
  • auto-approve.yml + auto-merge.yml → pr-automation.yml:2个job并行,共用同一个workflow触发

公共步骤抽取(scripts/ci/)

  • step_checkout.sh - 代码checkout(带重试)
  • step_timer_start.sh / step_timer_end.sh - job计时
  • step_install_ffmpeg.sh - ffmpeg安装
  • step_frontend_install.sh - 前端依赖安装(带缓存)
  • step_frontend_run.sh - 前端命令docker执行封装

大Job逻辑脚本化

  • run_validate.sh - 8项质量检查合一(密钥/格式/类型/安全/依赖/死代码/脚本/迁移)
  • run_unit_tests.sh - 增量选择+覆盖率+diff-cover全流程
  • run_integration_tests.sh - PG/Redis启动+迁移+测试+清理+覆盖率

关键保障(不影响CI速度)

workflow name 保持 CI/CD Pipeline 不变
→ status check context 名称完全一致,分支保护门禁和 auto-merge 不受影响

所有 job name 与原文件完全一致
→ Validate / Unit Tests / Frontend Lint / Integration Tests 等context名不变

job间并行/依赖关系不变
→ 合并的是配置文件,不是把步骤串成一条线,lint/test/build/deploy并行关系完全保留

所有功能100%保留
→ lint / test / build / deploy / e2e / acr-cleanup / auto-approve / auto-merge 全保留

精简效果

指标 精简前 精简后 减少
workflow文件数 4个 2个 -50%
workflow YAML行数 1834行 ~1268行 -30.9%
顶级job数 18个 16个 -11%

风险等级

低 - 仅改动 .gitea/workflows/ 配置和新增 scripts/ci/ 脚本,不触碰任何业务代码。核心行为(job name / context / 触发条件 / 执行逻辑)完全保持一致。

#603 CI架构精简 ## 变更内容 ### 配置合并 - **ci-cd.yml + ci-build.yml → ci-pipeline.yml**:14个job统一到一条主Pipeline,一次提交一组结果 - **auto-approve.yml + auto-merge.yml → pr-automation.yml**:2个job并行,共用同一个workflow触发 ### 公共步骤抽取(scripts/ci/) - `step_checkout.sh` - 代码checkout(带重试) - `step_timer_start.sh` / `step_timer_end.sh` - job计时 - `step_install_ffmpeg.sh` - ffmpeg安装 - `step_frontend_install.sh` - 前端依赖安装(带缓存) - `step_frontend_run.sh` - 前端命令docker执行封装 ### 大Job逻辑脚本化 - `run_validate.sh` - 8项质量检查合一(密钥/格式/类型/安全/依赖/死代码/脚本/迁移) - `run_unit_tests.sh` - 增量选择+覆盖率+diff-cover全流程 - `run_integration_tests.sh` - PG/Redis启动+迁移+测试+清理+覆盖率 ## 关键保障(不影响CI速度) ✅ **workflow name 保持 CI/CD Pipeline 不变** → status check context 名称完全一致,分支保护门禁和 auto-merge 不受影响 ✅ **所有 job name 与原文件完全一致** → Validate / Unit Tests / Frontend Lint / Integration Tests 等context名不变 ✅ **job间并行/依赖关系不变** → 合并的是配置文件,不是把步骤串成一条线,lint/test/build/deploy并行关系完全保留 ✅ **所有功能100%保留** → lint / test / build / deploy / e2e / acr-cleanup / auto-approve / auto-merge 全保留 ## 精简效果 | 指标 | 精简前 | 精简后 | 减少 | |------|--------|--------|------| | workflow文件数 | 4个 | 2个 | -50% | | workflow YAML行数 | 1834行 | ~1268行 | **-30.9%** | | 顶级job数 | 18个 | 16个 | -11% | ## 风险等级 低 - 仅改动 .gitea/workflows/ 配置和新增 scripts/ci/ 脚本,不触碰任何业务代码。核心行为(job name / context / 触发条件 / 执行逻辑)完全保持一致。
xiaoxia added 1 commit 2026-07-19 18:29:39 +08:00
ci: 架构精简 - 合并4个workflow为2个,抽取公共步骤为脚本
CI/CD Pipeline / Check if frontend-only change (pull_request) Failing after 0s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 0s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 0s
PR Automation / Auto Approve on CI Green (pull_request) Failing after 0s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 0s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 0s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 0s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (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 / ACR Image Cleanup (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 / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 0s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 37s
AI Code Review / AI Code Review (pull_request) Successful in 1m41s
56281fae77
#603 CI架构精简:
- 合并 ci-cd.yml + ci-build.yml → ci-pipeline.yml(14个job统一pipeline)
- 合并 auto-approve.yml + auto-merge.yml → pr-automation.yml(2个job并行)
- 抽取公共步骤为shell脚本:checkout/timer/ffmpeg/frontend_install/frontend_run
- 抽取大job主逻辑为脚本:run_validate/run_unit_tests/run_integration_tests
- workflow name保持 CI/CD Pipeline 不变,确保status check context兼容
- job name全部与原文件一致,不影响分支保护门禁和auto-merge
- YAML代码量减少30%+,所有功能100%保留,CI速度不受影响

🚀 预览环境已部署

项目 详情
PR号 #605
预览链接 https://pr-605.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #605 | | 预览链接 | [https://pr-605.preview.xiaoxiajianji.com](https://pr-605.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-19 18:34:22 +08:00
fix(ci): checkout步骤用raw API下载脚本,解决鸡生蛋问题
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 Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (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 API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 15s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Failing after 22s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 52s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 54s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 1m26s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 3m1s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m19s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m27s
AI Code Review / AI Code Review (pull_request) Has been cancelled
65888fdfef
xiaoxia added 1 commit 2026-07-19 18:40:09 +08:00
fix(ci): 修复unit_tests set -e 退出问题 + 前端依赖安装移除缓存卷
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 Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (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 / ACR Image Cleanup (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 / Check if frontend-only change (pull_request) Successful in 12s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 17s
AI Code Review / AI Code Review (pull_request) Failing after 26s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m25s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m53s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 3m34s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m49s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m56s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m32s
e6fae99955
xiaoxia added 1 commit 2026-07-19 18:51:48 +08:00
fix(ci): 修复diff-cover git checkout失败 - 清理未跟踪文件
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 Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (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 / Check if frontend-only change (pull_request) Successful in 23s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m24s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m51s
AI Code Review / AI Code Review (pull_request) Successful in 3m1s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m47s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 3m34s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m3s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m31s
ced82267e4
Collaborator

代码审查结果 - PR #605

⚠️ 问题(0个需要修改)

(本次可见的 Diff 主要为文件删除操作,未发现必须修改的逻辑问题)

💡 建议(3个可选)

  1. [auto-approve.yml / auto-merge.yml] 确保 API 分页处理或限制值足够

    • 具体内容:被删除的代码在获取 PR 文件列表时使用了 limit=300 (.../files?limit=300)。如果 PR 变更文件超过 300 个,会导致文件统计不全,进而错误判断“纯前端改动”或“包含后端改动”。请确保新的实现(可能在 scripts/ci/ 中)处理了分页逻辑或设置了足够大的限制值。
  2. [auto-approve.yml / auto-merge.yml] 避免硬编码 CI Context 名称

    • 具体内容:被删除的代码中硬编码了 CI 检查项名称(如 "CI/CD Pipeline / Frontend Lint (pull_request)")。这种写法非常脆弱,一旦 CI Pipeline 名称调整,自动化逻辑将失效。建议新实现采用动态获取 Context 或配置化的方式。
  3. [auto-approve.yml] 检查超时配置的边界条件

    • 具体内容:被删除的 auto-approve.yml 设置了 timeout-minutes: 20,但轮询逻辑包含初始等待 30 秒 + 120 次 10 秒轮询,总时长可达 20.5 分钟。这存在极小概率的竞态条件(Job 在最后一次循环成功前超时)。建议新实现调整轮询次数或超时时间,确保 timeout-minutes 略大于理论最大等待时长。

格式检查通过 | 逻辑审查需修改 | 性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 18:54:51 | 模型:

## 代码审查结果 - PR #605 ### ⚠️ 问题(0个需要修改) (本次可见的 Diff 主要为文件删除操作,未发现必须修改的逻辑问题) ### 💡 建议(3个可选) 1. **[auto-approve.yml / auto-merge.yml] 确保 API 分页处理或限制值足够** - 具体内容:被删除的代码在获取 PR 文件列表时使用了 `limit=300` (`.../files?limit=300`)。如果 PR 变更文件超过 300 个,会导致文件统计不全,进而错误判断“纯前端改动”或“包含后端改动”。请确保新的实现(可能在 `scripts/ci/` 中)处理了分页逻辑或设置了足够大的限制值。 2. **[auto-approve.yml / auto-merge.yml] 避免硬编码 CI Context 名称** - 具体内容:被删除的代码中硬编码了 CI 检查项名称(如 `"CI/CD Pipeline / Frontend Lint (pull_request)"`)。这种写法非常脆弱,一旦 CI Pipeline 名称调整,自动化逻辑将失效。建议新实现采用动态获取 Context 或配置化的方式。 3. **[auto-approve.yml] 检查超时配置的边界条件** - 具体内容:被删除的 `auto-approve.yml` 设置了 `timeout-minutes: 20`,但轮询逻辑包含初始等待 30 秒 + 120 次 10 秒轮询,总时长可达 20.5 分钟。这存在极小概率的竞态条件(Job 在最后一次循环成功前超时)。建议新实现调整轮询次数或超时时间,确保 `timeout-minutes` 略大于理论最大等待时长。 --- ✅ 格式检查通过 | ✅ 逻辑审查需修改 | ✅ 性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 18:54:51 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-07-19 18:56:42 +08:00
fix(ci): 修复diff-cover丢失coverage.xml - 备份时包含coverage.xml
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 Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (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 / Check if frontend-only change (pull_request) Successful in 25s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 58s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m37s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m22s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m32s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m2s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m33s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m26s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 11s
AI Code Review / AI Code Review (pull_request) Successful in 7m12s
7f177aef3c
auto-approve-bot approved these changes 2026-07-19 19:00:45 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-19 19:00:45 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 0a8bfc9bcc into develop 2026-07-19 19:02:09 +08:00
auto-approve-bot deleted branch ci/arch-refactor 2026-07-19 19:02:09 +08:00

🗑️ 预览环境已清理

PR #605 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #605 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.