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
相关产品推荐
相关产品推荐

