From dc501f74e2050fdcd8a6ad1f6c788020bdad3042 Mon Sep 17 00:00:00 2001 From: lanrtop Date: Sat, 4 Jul 2026 08:08:01 +0900 Subject: [PATCH] =?UTF-8?q?fix(cicd):=20PR=20CI=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=90=8C=E6=AC=BE=20lint=20=E8=AF=AD=E6=B3=95=E9=9B=B7?= =?UTF-8?q?=EF=BC=8C=E9=98=B2=E6=AD=A2=E5=A4=8D=E5=88=B6=E5=88=B0=E5=AD=90?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 炼境自身 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 --- src-tauri/src/commands/cicd.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/commands/cicd.rs b/src-tauri/src/commands/cicd.rs index 69372e3..71dfb09 100644 --- a/src-tauri/src/commands/cicd.rs +++ b/src-tauri/src/commands/cicd.rs @@ -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");