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

相关推荐
SelectDB36 分钟前
金城银行基于 Apache Doris 构建实时数据平台:T+1 到分钟级的金融级实践
后端
Csvn38 分钟前
📊 SQL 入门 Day 13:窗口函数进阶
后端·sql
卷无止境43 分钟前
拯救乱码方块:pandas 绘图中文字体的一揽子解决方案
后端·python
SelectDB1 小时前
Apache Doris 4.1:面向 AI & Search 的统一数据底座怎么选?向量检索 + 全文搜索 + 100MB JSON 完整能力拆解
后端
lichenyang4531 小时前
从图片生成任务到用户隔离:AIGC Creative Studio 后端与 PostgreSQL 建模实践
前端·后端
Zane19941 小时前
别再手写 try/finally 了:一文讲透 with 语句背后的上下文管理器协议
后端·python
进击的程序猿~1 小时前
Go 内存分配与垃圾回收源码深度学习手册
开发语言·后端·golang
geovindu2 小时前
go:Bit Operation Algorithm
开发语言·后端·算法·golang·位运算法
元界metalite2 小时前
Spring-AOP切面越写越多怎么办-8类场景的一条有序处理器链
后端
有米9792 小时前
Logstash的安装和Elasticsearch的整合
后端