ci: auto-skip internal CI changes in release notes - #7251
Conversation
|
Thanks for the PR! Template looks good ✓ Problem: observed operational issue — maintenance-only CI PRs clutter generated release notes unless a maintainer remembers to apply the manual Direction: aligned. This is a maintainer QoL improvement for release note curation — no user-facing impact, no touch on auth/sandbox/model/public contract. The conservative "default to include" posture is the right call. Size: not applicable — all changes are in Approach: scope feels right. A focused classifier (~100 lines) + a standard Moving on to code review. 🔍 中文说明感谢贡献! 模板完整 ✓ 问题:已观测到的运维问题——纯维护性 CI PR 会进入生成的 release note,除非维护者记得手动添加 方向:对齐。这是 release note 整理的维护者体验改进——不影响用户,不涉及 auth/sandbox/model/公共契约。保守的"默认保留"策略是正确的选择。 规模:不适用——所有改动在 方案:范围合理。聚焦的分类器(约 100 行)+ 标准 进入代码审查 🔍 — Qwen Code · qwen3.7-max Reviewed at |
Code ReviewIndependent proposal: I'd solve this with a Findings: No blockers. The implementation is clean and well-reasoned:
One minor observation (non-blocking): Real-Scenario TestingThis is a CI-only change (no CLI behavior), so testing means running the classifier against real PRs and the unit test suite: All results match the PR's claims. The classifier correctly:
Also verified #7163 → skip, #7142 → skip, #6963 → include (all correct). 中文说明代码审查独立方案: 我会用 发现: 无阻塞问题。 实现清晰且合理:
真实场景测试这是纯 CI 改动(无 CLI 行为变化),测试意味着在真实 PR 上运行分类器和单元测试套件。所有结果与 PR 描述一致。 — Qwen Code · qwen3.7-max Reviewed at |
|
Confidence: 5/5 — clean across every stage; focused CI automation that does exactly what it says, conservatively. This is a well-executed, tightly scoped CI improvement. The classifier logic is conservative where it matters (defaults to include, respects manual labels, catches release-sensitive paths), the security model is correct (trusted base-branch code only), and the tests cover the important edge cases including renamed files. Running it against real PRs confirmed the behavior matches the description exactly. The kind of PR you merge and forget about — which is the highest compliment for CI automation. 中文说明置信度:5/5 — 每个阶段都很干净;聚焦的 CI 自动化,保守地完成了它所说的事情。 这是一个执行良好、范围紧凑的 CI 改进。分类器逻辑在关键处保守(默认保留、尊重手动标签、捕获 release 敏感路径),安全模型正确(仅执行受信任的 base 分支代码),测试覆盖了重要边界情况(包括重命名文件)。在真实 PR 上运行确认行为与描述完全一致。 那种合并后就会忘记的 PR——这是对 CI 自动化最高的评价。 — Qwen Code · qwen3.7-max Reviewed at |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM, looks ready to ship. ✅
Code Coverage Summary
CLI Package - Full Text ReportCore Package - Full Text ReportFor detailed HTML reports, please see the 'coverage-reports-22.x-ubuntu-latest' artifact from the main CI run. |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
Reviewed — no blockers. Suggestions are inline.
— qwen3.8-max-preview via Qwen Code /review
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
Reviewed — no blockers. Suggestions are inline.
— qwen3.8-max-preview via Qwen Code /review
|
本轮自动化处理了当前未解决 review comments:
验证: |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
Reviewed — no blockers. Suggestions are inline.
— qwen3.8-max-preview via Qwen Code /review
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
Reviewed — no blockers. Suggestions are inline.
— qwen3.8-max-preview via Qwen Code /review
|
Pushed |
|
Qwen Code review paused — model quota exhausted. Qwen review stopped: the model API quota is exhausted (reset at 07-20 07:32:00 UTC.). Transient errors auto-retry, but a quota reset is too far out to wait on a runner. Re-run once it resets by commenting |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
Reviewed. Suggestions are inline.
— qwen3.7-max via Qwen Code /review
|
Addressed the latest review suggestion by adding release-classifier coverage for Verified with:
|
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
No issues found. LGTM! ✅
— qwen3.7-max via Qwen Code /review
|
Released in v0.20.1. |
What this PR does
This PR automatically excludes purely internal CI pull requests from generated release notes while keeping release-relevant CI changes visible. A trusted base-branch workflow evaluates the PR title, labels, and every changed path whenever the PR changes, then owns a dedicated
skip-changelog-autolabel without interfering with the existing manualskip-changeloglabel.Automatic exclusion requires an explicit
ci:conventional type or an internal CI/GitHub Actions scope label, no bug, breaking, platform, packaging, or other product-facing semantic label, and only GitHub automation, agent workflow, test, or test-config paths. Release, publishing, deployment, installer, artifact, image, packaging, and changelog automation is always retained. Renamed files are evaluated using both their current and previous paths, and classification failures default to inclusion.Why it's needed
Generated release notes currently include maintenance-only CI pull requests unless a maintainer remembers to apply the manual exclusion label. This adds a conservative automated decision step so release notes stay user-focused without hiding CI work that can affect shipped products or distribution.
Reviewer Test Plan
How to verify
Confirm that a PR titled with
ci:and changing only an ordinary CI workflow receives the automatic exclusion label. Then add a production path, a release-sensitive automation path, a breaking marker, or a product-facing category and confirm the automatic label is removed. Also confirm that manually appliedskip-changelogremains untouched and that a renamed production file is classified using its old path.Evidence (Before & After)
Before: maintenance-only CI pull requests enter generated release notes unless manually labeled.
After: the local classifier marked representative internal CI PRs #7214, #7163, and #7142 as
skip, while release/publishing-sensitive PRs #6975 and #6963 remainedinclude. The full GitHub helper suite passed 83/83, the repository script suite passed 572 tests with 9 skipped, and formatting, ESLint, actionlint, build, and typecheck all passed.Tested on
Environment (optional)
Node.js 22, local macOS workspace; GitHub-hosted platform checks are delegated to PR CI.
Risk & Scope
Linked Issues
N/A — maintenance follow-up from release-note workflow review.
中文说明
本 PR 做了什么
本 PR 会自动从生成的 release note 中排除纯内部 CI PR,同时继续保留与发布相关的 CI 改动。一个仅执行受信任 base 分支代码的工作流会在 PR 发生变化时,根据标题、标签和所有变更路径重新判断,并独立维护
skip-changelog-auto标签,不会干扰现有的手动skip-changelog标签。自动排除要求 PR 具有明确的
ci:Conventional Commit 类型,或内部 CI/GitHub Actions scope 标签;不能带有 bug、breaking、平台、打包或其他面向产品的语义标签;并且只能修改 GitHub 自动化、agent 工作流、测试或测试配置路径。release、publish、deploy、installer、artifact、image、package 和 changelog 自动化始终保留。重命名文件会同时检查新旧路径,分类失败时默认保留在 release note 中。为什么需要
目前,维护性质的纯 CI PR 会进入生成的 release note,除非维护者记得手动添加排除标签。这个改动增加了一个保守的自动判断步骤,让 release note 更聚焦用户可感知的变化,同时不会隐藏可能影响最终产品或分发流程的 CI 改动。
Reviewer 测试计划
如何验证
确认标题为
ci:且只修改普通 CI 工作流的 PR 会获得自动排除标签。随后加入产品代码路径、发布敏感自动化路径、breaking 标记或面向产品的 category,确认自动标签会被移除。同时确认手动添加的skip-changelog不受影响,并确认重命名的生产文件会根据旧路径参与判断。证据(Before & After)
Before:纯维护性质的 CI PR 会进入生成的 release note,除非手动添加标签。
After:本地分类器将代表性的内部 CI PR #7214、#7163 和 #7142 判定为
skip,同时将发布/上传敏感的 PR #6975 和 #6963 保持为include。GitHub helper 测试 83/83 通过,仓库脚本测试 572 项通过、9 项跳过,格式检查、ESLint、actionlint、build 和 typecheck 均通过。测试平台
环境(可选)
Node.js 22,本地 macOS 工作区;GitHub 托管平台验证由 PR CI 完成。
风险与范围
关联 Issue
无——这是对 release-note 工作流审查的维护性跟进。