fix(deploy): pnpm 版本断言不一致时先 corepack 自愈,仍不一致则仍 fail-closed exit 1
ci/woodpecker/push/main Pipeline was successful

This commit is contained in:
wecom-project
2026-10-25 16:01:03 +08:00
parent 63a2bac424
commit e84719f76e
+10 -4
View File
@@ -56,10 +56,16 @@ assert_pnpm_version() {
fi
actual="$(pnpm -v 2>/dev/null | tail -1 | tr -d '[:space:]' || true)"
if [ "$actual" != "$expect" ]; then
echo "❌ pnpm 版本断言失败:package.json pin=$expect,实读 pnpm -v=${actual:-<空>}"
echo " 多为 corepack lastKnownGood 漂移(/root/.cache/node/corepack/lastKnownGood.json)"
echo " 修法:HOME=/root corepack prepare pnpm@$expect --activate | 中止(生产未被触碰)"
exit 1
echo "⚠️ pnpm 版本断言不匹配:package.json pin=$expect,实读 pnpm -v=${actual:-<空>}"
echo " 尝试自愈:corepack prepare pnpm@$expect --activate(integrity 依 packageManager 的 sha512 校验)"
corepack prepare "pnpm@$expect" --activate >/dev/null 2>&1 || true
actual="$(pnpm -v 2>/dev/null | tail -1 | tr -d '[:space:]' || true)"
if [ "$actual" != "$expect" ]; then
echo "❌ pnpm 版本断言失败(自愈未成功):pin=$expect,实读=${actual:-<空>}"
echo " 多为 corepack lastKnownGood 漂移或离线/缓存缺失;中止(生产未被触碰)"
exit 1
fi
echo " ✓ 自愈成功:pnpm $actual == package.json pin $expect"
fi
echo " ✓ pnpm 版本断言通过:pnpm $actual == package.json pin $expect"
}