fix(ci): push 路径检测改用 compare 响应内每提交 files 聚合 #1539

Merged
auto-approve-bot merged 2 commits from ci/fix-push-paths-compare into develop 2026-08-29 15:21:07 +08:00
Owner

问题

#1536 合并后首次 develop push(run 41477)中,check-push-paths 日志显示:

compare API 无返回,重试 1/3...
⚠️ 无法获取改动文件列表(新分支/API异常),保守起见走全量构建

路径过滤形同虚设,小改动仍会全量构建。

根因

Gitea 1.26.4 的 compare API(GET /repos/{repo}/compare/{base}...{head}):

  • 顶层 files 字段始终返回空数组merge_basenull(验证过多组区间,包括 8 个提交的真实变更,均为 0 files)
  • 但响应内 每个 commit 条目自带的 commits[].files 字段完整可用

修复

scripts/ci/ci_push_paths.sh:不再读顶层 d.files,改为聚合 d.commits[].files 的文件并集。

本地用三组真实区间 dry-run 验证:

  • squash 合并单提交(本次 PR #1536,6 个 scripts/workflow 文件)→ 纯后端,正确跳过 Web
  • 多提交全栈区间(11 文件,前端 7 + 后端 4)→ 全量
  • 纯前端区间(3 文件均在 apps/web/)→ 跳过后端
  • before 为全 0(新分支)→ 安全兜底全量

无网络额外请求、无分页风险(单次 compare 调用即包含全部 commit 的 files)。

## 问题 #1536 合并后首次 develop push(run 41477)中,`check-push-paths` 日志显示: ``` compare API 无返回,重试 1/3... ⚠️ 无法获取改动文件列表(新分支/API异常),保守起见走全量构建 ``` 路径过滤形同虚设,小改动仍会全量构建。 ## 根因 Gitea 1.26.4 的 compare API(`GET /repos/{repo}/compare/{base}...{head}`): - 顶层 `files` 字段**始终返回空数组**,`merge_base` 为 `null`(验证过多组区间,包括 8 个提交的真实变更,均为 0 files) - 但响应内 **每个 commit 条目自带的 `commits[].files` 字段完整可用** ## 修复 `scripts/ci/ci_push_paths.sh`:不再读顶层 `d.files`,改为聚合 `d.commits[].files` 的文件并集。 本地用三组真实区间 dry-run 验证: - squash 合并单提交(本次 PR #1536,6 个 scripts/workflow 文件)→ 纯后端,正确跳过 Web - 多提交全栈区间(11 文件,前端 7 + 后端 4)→ 全量 - 纯前端区间(3 文件均在 apps/web/)→ 跳过后端 - before 为全 0(新分支)→ 安全兜底全量 无网络额外请求、无分页风险(单次 compare 调用即包含全部 commit 的 files)。
xiaoxia added 1 commit 2026-08-29 14:51:48 +08:00
fix(ci): push 路径检测改用 compare 响应内每提交 files 聚合
CI/CD Pipeline / Check push changed paths (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 Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (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 / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2m26s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m28s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
01fcd50da8
Gitea 1.26.4 compare API 顶层 files 字段始终为空且 merge_base=null,
导致 ci_push_paths.sh 永远走保守全量构建,路径过滤形同虚设。
改为聚合 compare 响应中 commits[].files(该字段完整可用),
覆盖 squash merge(单提交)与多提交 push 区间。
已在本地用三组真实区间验证:纯后端6文件、纯前端3文件、全栈11文件。
xiaoxia added 1 commit 2026-08-29 14:55:23 +08:00
fix(ci): deploy-staging 链路不再被路径过滤跳过的上游连带 skip
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 4m15s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 4m54s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m5s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m46s
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 / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m17s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m44s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m25s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m24s
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 / Validate - Code Quality (pull_request) Successful in 9m49s
AI Code Review / AI Code Review (pull_request) Successful in 8m26s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m23s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 14m12s
CI/CD Pipeline / CI Gate (pull_request) Successful in 36s
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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 3m48s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 4m40s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
e8ac1f5dc6
- act_runner 对无状态检查函数的 job-level if 隐式包 success(),
  build-staging/retag 被路径过滤 if 跳过时,deploy-staging 及下游
  staging-e2e/staging-api-tests 会被连带 skip(#1536 合并后首次
  develop push 实际发生:三镜像构建成功但 Deploy Staging skipped)
- deploy-staging/staging-e2e/staging-api-tests 的 if 显式加 success(),
  使 skipped 上游不阻塞、真正失败仍阻断
- retag-staging-skipped runs-on 从 runtime-builder 迁到 ci-l2
  (与 deploy-staging/acr-cleanup 一致,仅需 docker CLI)

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1539 | | 预览链接 | [https://pr-1539.preview.xiaoxiajianji.com](https://pr-1539.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-08-29 15:05:32 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-29 15:05:33 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit ef09338098 into develop 2026-08-29 15:21:07 +08:00
auto-approve-bot deleted branch ci/fix-push-paths-compare 2026-08-29 15:21:07 +08:00

🗑️ 预览环境已清理

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

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

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