You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline打包文件上传Nexus后为空,请求排查脚本问题

问题分析与解决

你的脚本存在关键问题,导致推送至Nexus的ZIP文件为空:

1. Shell脚本中变量未正确解析

你在sh步骤中用三个单引号(''')包裹命令,这种情况下Jenkins Groovy的$VERSION变量不会被替换,shell会读取自身环境中的VERSION变量(通常不存在),导致实际打包的文件名为spots-.zip,而非预期的spots-${VERSION}.zip。

而后续nexusArtifactUploader中使用的"$VERSION"是Groovy变量,会被正确替换,因此你上传的是一个不存在的文件,插件最终推送了空ZIP到Nexus。

解决方法:将sh的包裹符改为三个双引号("""),让Groovy变量能被正确解析:

sh """
    cd src/main/resources/spots
    zip spots-${VERSION}.zip spots-1.txt
    ls -al
    zipinfo spots-${VERSION}.zip
"""

2. 验证打包结果(可选)

执行Pipeline时查看控制台输出,通过ls -al确认生成的ZIP文件名与预期一致,通过zipinfo确认ZIP内包含spots-1.txt文件,确保打包成功。

修正后的完整Stage代码

stage('Zip and push files'){
    script {                  
        sh """
            cd src/main/resources/spots
            zip spots-${VERSION}.zip spots-1.txt
            ls -al
            zipinfo spots-${VERSION}.zip
        """
    }
    nexusArtifactUploader(
        nexusVersion: 'nexus3',
        protocol: 'https',
        nexusUrl: 'myNexusUrl',
        groupId: 'QA',
        version: "$VERSION",
        credentialsId: "nexus3",
        repository: 'maven-releases',
        artifacts: [
            [artifactId: 'spots-artifact',
             classifier: '',
             file: "src/main/resources/spots/spots-${VERSION}.zip",
             type: 'zip']
        ]
     )
}

建议将nexusArtifactUploader中的file路径也改为双引号包裹,保持语法统一。

内容的提问来源于stack exchange,提问作者blaiso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 23:47:36