ci: add ECS runner qwen update workflow - #7214
Conversation
|
Thanks for the PR! Template looks good ✓ Problem: This is an infrastructure maintenance addition — a workflow to update the Singapore ECS self-hosted runner's globally installed Direction: Aligned — CI maintenance tooling for the project's own infrastructure. CHANGELOG has no direct reference but the area is clearly relevant (self-hosted runner management). Size: Not applicable — single Approach: The scope is minimal — one workflow, three steps (resolve → install → verify). No unnecessary abstraction. The env-var'd inputs, repo guard, concurrency lock, and timeout all follow the repo's existing workflow conventions. Nothing to cut. Moving on to code review. 🔍 中文说明感谢贡献! 模板完整 ✓ 问题:这是一个基础设施维护功能——用于在新加坡 ECS self-hosted runner 上更新全局安装的 方向:对齐——项目自身基础设施的 CI 维护工具。CHANGELOG 无直接引用但该领域明确相关(self-hosted runner 管理)。 规模:不适用——单个 方案:范围极简——一个 workflow,三个步骤(解析 → 安装 → 验证)。无多余抽象。env 变量传参、仓库守卫、并发锁、超时设置均遵循仓库现有 workflow 约定。无可删减。 进入代码审查 🔍 — Qwen Code · qwen3.7-max Reviewed at |
ReviewNice, tightly-scoped maintenance workflow — env-var'd input (no inline 🔴 Blocker:
|
|
Code Review (2a) Independent proposal: for a "update global qwen on a self-hosted runner" workflow, I'd write exactly what this PR does — a No critical blockers, no AGENTS.md violations. Specifics:
Real-Scenario Testing (2b) This is a CI-only workflow targeting a specific self-hosted runner ( All three version-resolution paths (empty → latest, explicit, v-prefixed) resolve correctly. The verify step's 中文说明代码审查 (2a) 独立方案:对于"更新 self-hosted runner 上的全局 qwen"这个需求,我会写的方案与这个 PR 完全一致—— 无关键阻塞项,无 AGENTS.md 违规。 真实场景测试 (2b) 这是一个仅 CI 的 workflow,目标是特定 self-hosted runner( — Qwen Code · qwen3.7-max Reviewed at |
|
Confidence: 5/5 — clean across every stage; would merge without hesitation. Reflection: This is a textbook maintenance PR — one file, one workflow, three steps. The problem is real (keeping the shared ECS runner host updated after releases), the solution is the minimum viable workflow, and the implementation follows every repo convention for GitHub Actions (env-var'd inputs, repo guard, concurrency, timeout, minimal permissions). The author addressed the initial review feedback (runner label, version resolution robustness) promptly, and wenshao's re-review confirmed the fixes. My independent proposal matches the PR 1:1 — there's nothing to simplify or cut. The shell logic is verified end-to-end: all three input paths resolve correctly, the verify comparison works against the real 中文说明置信度:5/5 —— 每个阶段都干净,毫不犹豫地合并。 反思:这是一个教科书级的维护 PR——一个文件、一个 workflow、三个步骤。问题真实存在(发布后保持共享 ECS runner 宿主机更新),方案是最小可行 workflow,实现遵循了仓库中 GitHub Actions 的所有约定(env 变量传参、仓库守卫、并发控制、超时、最小权限)。作者及时回应了初始 review 反馈(runner 标签、版本解析健壮性),wenshao 的 re-review 确认了修复。我的独立方案与 PR 1:1 匹配——无可简化或删减。Shell 逻辑已端到端验证:三种输入路径均正确解析,verify 比较对真实 — 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. ✅
|
Fixed in 0e09514.
|
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
— qwen3.7-max via Qwen Code /review
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. |
Re-review of 0e09514Thanks for the quick turnaround. Verified the fixes:
One remaining defect in the new resolve step, though: 🟡 The
|
|
@qwen-code /review |
| _Qwen Code review request accepted. Review is queued in [workflow run](https://github.com/QwenLM/qwen-code/actions/runs/29681657201)._ |
|
@qwen-code /takeover |
|
🤝 Takeover engaged: the autofix loop now manages this PR — it will address new review feedback and resolve base conflicts until the label is removed or the round cap is reached. Remove the 中文说明🤝 已接管:autofix 循环现在管理此 PR —— 将持续处理新的评审反馈与 base 冲突,直到移除标签或达到轮次上限。移除 |
|
🤖 Could not address the latest feedback automatically (round 1/100). A human should take over this PR. AutoFix failed before producing a verified commit (the run crashed or timed out before it could explain why). Run log: https://github.com/QwenLM/qwen-code/actions/runs/29681363889 |
|
@qwen-code /review |
|
Qwen Code review did not complete successfully. Qwen review aborted with an API error before posting comments. See workflow logs. |
- update-ecs-runner-qwen: the `if ! version=$(npm view ... | tail)` guard never fired (a pipeline's exit status is tail's, always 0), so npm view's E404 was masked and an empty version reached `npm install -g @qwen-code/qwen-code@` -> resolves to latest and silently mutates the shared runner. Check for an empty result explicitly instead. - qwen-code-pr-review: revert fetch-depth 0->1 at both base checkouts; shallow clones break merge-base resolution for the /review and /resolve jobs (fetch-pr's merge-base returns null; merge-tree conflict detection degrades to 'unknown').
wenshao
left a comment
There was a problem hiding this comment.
Re-review of dfa12a8 — LGTM
Verified the version-guard fix by running the exact resolve-step script locally with a nonexistent version:
$ INPUT_VERSION=99.99.99 ... (verbatim step script)
::error::No published qwen version matches '99.99.99'.
exit=1The E404-masking path is gone: a typo'd version now fails the resolve step instead of silently installing latest. Empty input still resolves through @latest to a concrete version, so the verify comparison stays sound.
Also checked the intermediate commits: the fetch-depth change to qwen-code-pr-review.yml from afde470c9 is exactly reverted by dfa12a809 (diffed both patches — they cancel line for line), so the net PR diff is back to just the new workflow file. Those review jobs rely on full history for worktree/merge-base operations, so reverting was the right call.
All previous findings are resolved:
- ✅
runs-ontargets the realecs-qwenlabel - ✅ Bad version input fails fast, before touching the host
- ✅ Dist-tags resolve to concrete versions before install/verify
- ✅ Writability check tests the directories the install actually writes
- ✅ Risk section documents the in-place-swap tradeoff
Approving.
🤖 Generated with Claude Code — Claude Fable 5
The resolve step's `npm view ... | tail -n 1` pipeline masked npm's exit status (tail always exits 0). Without pipefail a typo'd or non-existent version produced an empty `version` variable silently; the existing `-z` guard caught it only by accident of empty stdout, not by design. Add `set -euo pipefail` to all three run blocks (matching the convention in qwen-code-pr-review.yml) and append `|| true` to the npm-view assignment so the script reaches the friendly ::error:: annotation instead of dying at the pipeline line.
|
@qwen-code /triage |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM, looks ready to ship. ✅
|
Released in v0.20.1. |
What this PR does
Adds a manual maintenance workflow that updates the Singapore ECS self-hosted runner host to a requested Qwen Code version, or to the latest npm version when the version input is empty.
Why it's needed
The ECS host runs multiple self-hosted runner instances that share the globally installed
qwenCLI, so maintainers only need one targeted workflow run to update the host after a release.Reviewer Test Plan
How to verify
Run the workflow manually with an explicit version such as
0.20.0, then confirm the job resolves the version, installs@qwen-code/qwen-code, and verifiesqwen --versionmatches the resolved version.Evidence (Before & After)
N/A, CI maintenance workflow only.
Tested on
node scripts/lint.js --actionlint; ✅node scripts/lint.js --yamllintEnvironment (optional)
Local repository workflow lint checks.
Risk & Scope
sudofor npm global installs.qweninstall in place, so maintainers should dispatch it when the ECS runner pool is quiet.Linked Issues
N/A
中文说明
What this PR does
新增一个手动维护 workflow,用来把新加坡 ECS self-hosted runner 宿主机更新到指定的 Qwen Code 版本;如果版本输入为空,则从 npm 获取最新版本。
Why it's needed
这台 ECS 宿主机上有多个 self-hosted runner 实例,它们共享全局安装的
qwenCLI,所以发布后维护者只需要触发一次定向 workflow 就能更新这台宿主机。Reviewer Test Plan
How to verify
手动运行该 workflow,输入
0.20.0这类明确版本,然后确认 job 能解析版本、安装@qwen-code/qwen-code,并校验qwen --version与解析出的版本一致。Evidence (Before & After)
N/A,仅维护 CI workflow。
Tested on
node scripts/lint.js --actionlint; ✅node scripts/lint.js --yamllintEnvironment (optional)
本地仓库 workflow lint 检查。
Risk & Scope
sudo来执行 npm 全局安装。qwen安装,维护者应该在 ECS runner 池空闲时触发。Linked Issues
N/A