CI 重试、并发与超时
用仓库 Actions variables 调整测试预算,并理解 off 与零次重试的区别。
这些变量配置 Qwen Code 上游 CI 的资源与重试策略,不是 CLI 用户的 settings.json 配置。仓库维护者可在 Settings → Secrets and variables → Actions → Variables 中设置;它们属于 variables,不应把密钥放入其中。
当前变量
| Actions variable | 未设置或空值时 | 作用范围 |
|---|---|---|
| QWEN_CI_VITEST_RETRY | 2 | 主 CI 的 workspace 测试与 scripts 测试 |
| QWEN_RELEASE_VITEST_RETRY | 2 | release workspace 测试分片 |
| QWEN_CI_VITEST_MAX_WORKERS | 4 | 名称以 ecs-qwen- 开头的 runner 上,指定 CI/release 测试任务的最大线程与进程数 |
| QWEN_RELEASE_WORKSPACE_TIMEOUT_MINUTES | 45 | release workspace 测试 job |
| QWEN_RELEASE_STATIC_TIMEOUT_MINUTES | 60 | release quality_static job |
| QWEN_RELEASE_BUILD_TIMEOUT_MINUTES | 45 | release quality_build job |
并发上限通过 VITEST_MAX_THREADS 和 VITEST_MAX_FORKS 传给适用步骤,最小 worker 数为 1。它不是全部 Vitest 命令的全局参数,也不自动覆盖 GitHub-hosted runner 或所有集成测试;例如 Web Shell E2E 使用独立任务。
重试值的语义
普通数字作为 Vitest retry 值。字面值 off 则让工作流不传 --retry,保留测试项目自身配置的决定权。设置为 0 会显式覆盖为零次重试,两者不等价。
重试发生在同一次测试运行内。失败后重试通过可能让最终运行成功,因此调整重试预算时还需追踪不稳定用例,不能靠不断加大次数掩盖确定性错误。
超时分别调整
静态检查、build 和 workspace 测试分别使用自己的 job 超时。扩大某项不会扩大另两项,也不修改单个工具、模型请求或测试断言的超时。
先从日志判断耗时来源,再调整对应变量。worker 更多不一定更快;共享 runner 上过高并发可能加剧内存或资源竞争。
修改工作流后的检查
官方将相关表达式校验放在 scripts/tests/package-scripts.test.js、no-ak-integration-ci.test.js 和 release-workflow.test.js 等测试中。修改变量或流程后应运行相应脚本测试。
部分纯文档变更的 CI profile 可能不运行 test:scripts。需要验证工作流表达式时,应显式选择覆盖它们的检查,不能仅凭文档 CI 为绿就认定这些路径已经执行。