Jenkins Pipeline中如何获取Copy Artifact插件复制的构件构建编号?
在Jenkins Pipeline中获取被复制构件的构建编号
在Jenkins Pipeline里,确实没办法直接拿到普通自由风格任务里那种COPYARTIFACT_BUILD_NUMBER_${PROJECT_NAME}格式的环境变量,但我们有更灵活的方式来获取这个编号——核心是利用copyArtifacts步骤的返回值。
核心用法:通过copyArtifacts的返回对象获取
当你使用Copy Artifact插件的copyArtifacts步骤时,它会返回一个BuildInfo对象,这个对象里包含了被复制构件对应的上游构建的所有关键信息,其中就包括构建编号。
举个脚本式Pipeline的例子:
// 执行复制构件操作并接收返回结果 def copyResult = copyArtifacts( projectName: '你的上游项目名称', selector: latestSuccessful(), // 这里可以换成specific('XXX')指定具体构建,或者其他选择器 target: '本地存放构件的目录' ) // 从返回对象中提取构建编号 def copiedBuildNum = copyResult.build.number echo "本次复制的构件来自上游项目的构建编号:${copiedBuildNum}"
如果是声明式Pipeline,只需要把这段逻辑放在script块里就行,甚至可以把编号存入环境变量供后续步骤使用:
pipeline { agent any stages { stage('复制上游构件') { steps { script { def copyInfo = copyArtifacts( projectName: 'my-upstream-project', selector: lastSuccessful() ) // 存入环境变量,后续阶段可直接引用 env.UPSTREAM_BUILD_NUMBER = copyInfo.build.number echo "已复制上游项目构建#${env.UPSTREAM_BUILD_NUMBER}的构件" } } } stage('后续步骤') { steps { echo "刚才复制的构件来自构建:${env.UPSTREAM_BUILD_NUMBER}" } } } }
注意事项
- 确保你安装的Copy Artifact插件版本足够新(一般来说2.0以上版本就支持返回
BuildInfo对象了),如果版本太旧可能没有这个特性。 - 不管你用哪种构建选择器(最新成功、特定编号、最新稳定等),返回的
BuildInfo对象都会准确对应到实际复制的那个构建。
内容的提问来源于stack exchange,提问作者Dhananjay
相关产品推荐
相关产品推荐

