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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:54:42