fix(cicd): PR CI 模板同款 lint 语法雷,防止复制到子项目
All checks were successful
Push Check / check (push) Successful in 51s

炼境自身 pr-check.yml 刚踩的 pnpm lint --if-present 必挂 bug,
源头就是 build_pr_ci_workflow 模板——每个经炼境生成 CI 的子项目
都会领到坏 workflow。改为 pnpm run --if-present 语法(本地实测
exit 0),并在 pr_ci_template_is_correct 加回归断言驻军。

Rules-Applied: R07,R10
This commit is contained in:
lanrtop 2026-07-04 08:08:01 +09:00
parent a1a4748c58
commit dc501f74e2

View File

@ -391,8 +391,8 @@ jobs:
- run: pnpm install --frozen-lockfile
- run: {build_cmd}
- run: pnpm lint --if-present
- run: pnpm test --if-present --passWithNoTests
- run: pnpm run --if-present lint
- run: pnpm run --if-present test --passWithNoTests
"#
);
@ -546,6 +546,16 @@ mod tests {
let (content, filename, secrets) = build_pr_ci_workflow(&cfg("pr_ci"));
assert!(content.contains("pull_request"), "触发器应为 pull_request");
assert!(content.contains("pnpm build"), "应含构建步骤");
// --if-present 只对 pnpm run 子命令有效,直接 `pnpm lint --if-present` 会把
// lint 当外部命令执行报 ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL炼境自身 CI 踩过)
assert!(
content.contains("pnpm run --if-present lint"),
"lint 步骤须用 pnpm run --if-present 语法"
);
assert!(
content.contains("pnpm run --if-present test"),
"test 步骤须用 pnpm run --if-present 语法"
);
assert!(!content.contains("SERVER_HOST"), "不应含 SSH 部署配置");
assert!(!content.contains("ssh-action"), "不应含 SSH Action");
assert_eq!(filename, "pr-check.yml");