Pnpm approve-builds --all Jenkins 第一次构建总是出错

出现的问题:

sh 'pnpm approve-builds --all' 在 sh 'pnpm install --no-frozen-lockfile' 前面的时候第一次构建总是出错。

但第二次构建的时候就成功。

处理

是正常现象:pnpm approve-builds --all 必须在 已经有 pending/ignored build scripts 之后才有东西可批准。

第一次构建时你把它放在 pnpm install --no-frozen-lockfile 前面,它还不知道哪些依赖需要跑 build script,所以批准不到任何包;随后 install 才发现并拦截这些脚本,导致首次构建失败。

pnpm 文档说明 approve-builds 是批准依赖在安装期间运行脚本,批准项会写入 onlyBuiltDependencies--all 是批准所有 pending builds。

推荐顺序:

css 复制代码
pnpm install --no-frozen-lockfile
pnpm approve-builds --all
pnpm rebuild
pnpm build

核心原因:approve-builds 不是"预先允许所有未来依赖",而是"批准当前已被 pnpm 发现、正在等待批准的 build scripts"。

如果你的 Agent 是全新的(Docker/K8s Pod 每次重建),可以:

python 复制代码
pipeline {
    agent any

    stages {
        stage('Install') {
            steps {
                sh '''
                    corepack enable

                    # 第一次安装,生成 pending builds
                    pnpm install --no-frozen-lockfile || true

                    # 自动批准
                    pnpm approve-builds --all

                    # 重新执行安装
                    pnpm install --no-frozen-lockfile
                '''
            }
        }

        stage('Build') {
            steps {
                sh 'pnpm build'
            }
        }
    }
}

最终使用的脚本是添加一个 Stage

python 复制代码
        stage("Install") {
            steps {
                sh '''
                    pnpm install --no-frozen-lockfile || true
                    pnpm approve-builds --all
                    pnpm install --no-frozen-lockfile
                '''
            }
        }

www.isharkfly.com/t/pnpm-appr...

相关推荐
浮游本尊43 分钟前
Java学习第39天 - API 自动化测试、MockMvc 与可观测性日志
后端
程序员cxuan1 小时前
太顶了,ChatGPT 要和 Codex 搞一起了。
人工智能·后端·程序员
算法印象派1 小时前
Rokid AI 眼镜远程协作应用"一线互联"开发实践:重连机制与凭据缓存
后端
奥利奥夹心脆芙1 小时前
深度学习框架ChatGPT原生训练模型和图像识别-手写数字识别
后端
武子康1 小时前
Java-14 深入浅出 MyBatis 插件机制深度解析:四大对象拦截与动态代理原理
java·后端
用户298698530141 小时前
Java 实战:精准操控 Word 文档中的内容控件
java·后端
李白的天不白1 小时前
spring boot + vue3项目部署须知
java·spring boot·后端
传说之后1 小时前
Go语言入门:从零到Hello World
后端·编程语言
ingcc1 小时前
gorm时间处理
后端