如何从管道中复制其他 Jenkins 作业的工件?

Jen*_*cke 4 jenkins jenkins-pipeline

我想使用 CopyArtifact 插件从另一个 Jenkins 作业复制构建工件。

该工件是使用以下命令创建的:

archiveArtifacts artifacts: '_Builds/BuildRelease/**', fingerprint: true
build 'Release Installer'
Run Code Online (Sandbox Code Playgroud)

在“发布安装程序”作业中,我尝试在管道中使用以下命令获取存档的工件:

  stages {
    stage('Get Artifacts') {
        steps {
            step([  $class: 'CopyArtifact',
                    projectName: "MyBuildJob",
                    filter: "_Builds/BuildRelease/archive.zip"
            ])
        }
    }
Run Code Online (Sandbox Code Playgroud)

执行“发布安装程序”作业时,未找到工件。两个作业都在同一构建节点上执行。

我认为我的过滤规则缺少一些东西。不幸的是,可用的 Jenkins 文档在细节和示例方面有点薄弱。

ksk*_*d19 5

我相信默认是从上次成功的作业中复制。但是,您目前似乎想要上游工作。这是一个片段:

copyArtifacts fingerprintArtifacts: true, projectName: 'MyBuildJob', selector: upstream()
Run Code Online (Sandbox Code Playgroud)

我使用代码片段生成器生成了此代码。它应该存在于作业的经典视图的左侧面板上。按钮文本为“Pipeline Syntax”,URL 为“my.jenkins.instance.com/pipeline-syntax/”

不需要指定工件过滤器,它会复制所有这些过滤器。但是,如果您想保留过滤器:

copyArtifacts filter: '_Builds/BuildRelease/archive.zip', fingerprintArtifacts: true, projectName: 'MyBuildJob', selector: upstream()
Run Code Online (Sandbox Code Playgroud)