ci(autofix): per-issue concurrency, route cancel-in-progress, assigned trigger - #6609
Conversation
…d trigger
- Change issue-autofix concurrency group from global `qwen-autofix-issue`
to per-issue `qwen-autofix-issue-${{ issue_number }}`, allowing multiple
issues to be fixed in parallel instead of serializing all runs.
- Add concurrency group to the route job with `cancel-in-progress: true`,
so stacked empty runs from rapid label events cancel each other instead
of queuing up (previously 9+ runs queued for 39+ minutes).
- Add `assigned` event trigger: when an issue is assigned to the autofix
bot, the route job routes directly to the issue phase, bypassing the
label gates. The assignee itself serves as the trust signal.
Co-Authored-By: Qoder <noreply@qoder.com>
|
Thanks for the PR! Template: headings differ from the project template ( Problem: Real and well-evidenced. The concurrency bottleneck causing 9+ empty runs to queue for 39+ minutes is a concrete operational issue, not theoretical hardening. ✓ Direction: CI workflow optimization for the autofix pipeline — squarely within project scope. No concerns. Size: Not applicable — single workflow file ( Approach: Three focused changes that each directly address the stated problem — per-issue concurrency groups, route cancel-in-progress, and assigned-event trigger. Scope feels tight and right. The assigned-to-bot bypass is a reasonable trust model (assignee as trust signal instead of label gates). Moving on to code review. 🔍 中文说明感谢提交! 模板: 标题与项目模板不完全一致( 问题: 真实且有充分证据。并发瓶颈导致 9+ 次空运行排队 39+ 分钟是一个具体的运维问题,不是理论性加固。✓ 方向: autofix 流水线的 CI 工作流优化——完全在项目范围内,无顾虑。 规模: 不适用——单个工作流文件,未触及核心模块路径。16 行新增 / 3 行删除。 方案: 三个聚焦的改动,每个都直接解决所陈述的问题——按 issue 分组的并发组、route 取消进行中、分配事件触发。范围紧凑合理。分配给 bot 的绕过机制是合理的信任模型(以 assignee 作为信任信号代替标签门控)。进入代码审查 🔍 — Qwen Code · qwen3.7-max |
Code ReviewI traced the bash nesting end-to-end: the modified block has 7 One cosmetic issue: the code inside the new Everything else looks correct:
No correctness bugs, security holes, or regressions found. TestingThis is a CI workflow change — there's no CLI behavior to drive in tmux. Verification happens on GitHub Actions when the workflow runs against this branch. The PR's test plan (parallel label events, assign-to-bot, concurrent issue fixes) covers the three changes well. 中文说明代码审查完整追踪了 bash 嵌套:修改后的代码块有 7 个 一个格式问题:新 其余一切正确:
未发现正确性 bug、安全漏洞或回归。 测试这是 CI 工作流变更——没有可在 tmux 中驱动的 CLI 行为。验证发生在 GitHub Actions 对该分支运行工作流时。PR 的测试计划(并行标签事件、分配给 bot、并发 issue 修复)很好地覆盖了三个改动。 — Qwen Code · qwen3.7-max |
|
This is a clean, focused CI improvement. The problem is real (39+ minutes of wasted queuing is concrete operational pain, not a hypothetical), the solution is minimal (three changes, each directly addressing one aspect of the bottleneck), and the implementation is correct (if/fi nesting verified, env var fallbacks confirmed, YAML validates). The only blemish is the indentation inconsistency inside the new else-branch — not a bug, but worth a quick cleanup pass. The template heading mismatch is similarly cosmetic for a change this small. Shipping this as-is is fine. Approving. ✅ 中文说明这是一个干净、聚焦的 CI 改进。问题是真实的(39+ 分钟的无效排队是具体的运维痛点,不是假设),方案是最小的(三个改动,每个直接解决瓶颈的一个方面),实现是正确的(if/fi 嵌套已验证,环境变量回退已确认,YAML 验证通过)。 唯一的瑕疵是新 else 分支内的缩进不一致——不是 bug,但值得快速清理。模板标题不匹配对于这么小的改动同样是格式问题。 可以直接合入。批准。✅ — Qwen Code · qwen3.7-max |
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. |
Problem
The autofix workflow has a concurrency bottleneck: all
issues-triggered runs share a single concurrency group (qwen-autofix-issue), causing 9+ empty runs to queue for 39+ minutes when multiple label events fire in quick succession.Changes
1. Per-issue concurrency for parallel fixes
Changed
issue-autofixconcurrency group from globalqwen-autofix-issuetoqwen-autofix-issue-${{ issue_number }}. Different issues can now be fixed in parallel; duplicate triggers for the same issue still serialize.2. Route job cancel-in-progress
Added
concurrency: { group: qwen-autofix-route, cancel-in-progress: true }to the route job. When multiple label events fire in rapid succession (e.g. bot applying 5 labels at once), only the latest route job runs — earlier ones are cancelled.3. Assigned event trigger
Added
assignedto the issues event types. When an issue is assigned to the autofix bot (qwen-code-dev-bot), the route job routes directly to the issue phase, bypassing theready-for-agent+autofix/approvedlabel gates. The assignee itself serves as the trust signal.Test plan
type/documentation) — verify route job completes in ~4s and subsequent label events cancel earlier runsqwen-code-dev-bot— verify autofix picks it up without needing labelsready-for-agent+autofix/approvedlabels simultaneously — verify both get fixed in parallel (not serialized)