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...

相关推荐
逝水无殇17 分钟前
C# 反射详解
开发语言·后端·c#
Cache技术分享21 分钟前
465. Java 反射 - 获取类的简单名
前端·后端
做系统的大强26 分钟前
REPL里的HLT:main_stmts为空时的致命尾声
后端
薛定谔的悦32 分钟前
光伏-储能-负荷联合预测:给 EMS 装上"预知能力"
后端
云技纵横32 分钟前
Redis 延迟双删还是读到脏数据?一次缓存一致性事故
redis·后端·面试
网易云信39 分钟前
从“合规”到“信任”:网易智企专属云打造强监管下的通信新范式
人工智能·后端
吃糖的小孩1 小时前
从“让聊天模型顺便选表情”到独立分类器:我给 QQ AI Chatbot 做了一套本地动态表情包系统
后端
无责任此方_修行中1 小时前
面对 300+ 仓库的重复劳动,我用 Guideline 优化了 Vibe Coding 工作流
后端·ai编程·vibecoding
蛋挞大王0011 小时前
精简版 MyBatis
后端
952361 小时前
RabbitMQ - 高级特性
java·spring boot·分布式·后端·rabbitmq