fix(ci): 修复三处必致 CI 变红的工程缺陷
排查 Phase 23 收尾项「 GitHub Actions 从未跑绿」时,逐个在本地复刻 CI 的每个 job, 发现三个与业务代码无关、但足以让流水线恒红的缺陷。 1. 依赖锁文件被排除出版本控制(admin-web job 必红) .gitignore 原先同时忽略 pnpm-lock.yaml 与 package-lock.json,导致 CI checkout 后 admin-web 根本拿不到 lockfile。pnpm install --frozen-lockfile 在缺 lockfile 时不是降级重试、而是直接报错,因此该 job 必然失败; miniapp 的 npm install 也因失去锁文件而版本浮动。 现在按包管理器逐一放行:admin-web 走 pnpm、miniapp 走 npm。 admin-web/package-lock.json 仍保持忽略 —— 同一目录并存两把锁会让两种包管理器 各按自己的锁安装,漂移时彼此看不出问题。 2. admin-web/pnpm-workspace.yaml 内容残缺(任何环境下都装不上依赖) 该文件原先只有两行 allowBuilds(esbuild / vue-demi),既无 packages 声明也未写取值。 pnpm 一旦检测到工作目录下存在 pnpm-workspace.yaml 就强制进入 workspace 模式, 随后因读不到 packages 而报 packages field missing or empty。 本仓库 admin-web 只有一个包,现显式声明单包 workspace,并补出 esbuild 与 vue-demi 的 build 白名单 —— 二者 postinstall 是必需步骤: esbuild 下载平台原生二进制、vue-demi 生成 Vue 版本桥接。 3. CI 使用 runner 预装的 pnpm,版本会漂移 pnpm 9 与 10 对「是否默认放行依赖 build 脚本」的语义相反,而上述 allowBuilds / onlyBuiltDependencies 恰好是版本敏感配置项。 runner 镜像升级后 会出现 install 能过、build 变红、且错误信息不指向真正原因的情况。 现钉住 pnpm@9.15.9,使 CI 语义不再随 runner 变化。 本轮同时在本地复刻了 CI 的其余 job: - migration job 的迁移序列校验:51 个迁移文件,版本 1 至 51 连续且唯一,通过。 - test-shell-guard:18 个 Python 文件未发现 skip / pass 空壳,通过。 - miniapp job 的 npm install 加 tsc --noEmit:通过。
This commit is contained in:
Generated
+37
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "danyang-match-miniapp",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "danyang-match-miniapp",
|
||||
"version": "1.0.0",
|
||||
"devDependencies": {
|
||||
"miniprogram-api-typings": "^5.2.3",
|
||||
"typescript": "^5.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/miniprogram-api-typings": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/miniprogram-api-typings/-/miniprogram-api-typings-5.2.3.tgz",
|
||||
"integrity": "sha512-KVcNSfR2VmRtz35rxkjLxE92HlsBnbT6NsKyTcDX3ebbTKAsAiTOFO1mRM82Xbe848dnEYqNGzaD48LMEvGytw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "5.9.3",
|
||||
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz",
|
||||
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.17"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user