从上游多分支管道复制工件

时间:2019-04-25 17:12:40

标签: jenkins jenkins-pipeline

我有以下Jenkins设置:

  1. 多分支管道,有时(在某些标记构建时)会触发
  2. 从上游工件构建安装程序的管道。

在上游MB管道中,有以下片段:

options {
    copyArtifactPermission('my-downstream-project');
}

post {
   success {
       script {
           if (isRelease()) {
               build job: 'my-downstream-project'
           }
       }
   }
}

下游管道,然后尝试获取工件:

copyArtifacts projectName: 'my-upstream-project', 
              selector: upstream(),
              filter: '*.jar',
              fingerprintArtifacts: true

启动下游构建时,失败并显示:

  

错误:无法找到工件副本的项目:hds-access-code-cache   这可能是由于不正确的项目名称或权限设置引起的。请参阅作业配置中有关项目名称的帮助。

到目前为止,我的理解是

  • 虽然我无法通过MB管道的配置UI配置“复制工件”权限,但该选项被接受并且应该可以使用。
  • 我可以找到的示例将使用projectName: 'my-upstream-project/tag-name',因为这是 actual 的工作。不过,我没有固定的分支或标签。

如何正确访问上游工件?

1 个答案:

答案 0 :(得分:0)

可以将作业名称作为参数传递下来。

将上游管道更改为:

build job: 'my-downstream-project',
      parameters: [string(name: 'upstreamJobName', value: env.BRANCH_NAME)]

将参数添加到下游管道:

parameters { 
    text(name: 'upstreamJobName', 
        defaultValue: '', 
        description: 'The name of the job the triggering upstream build'
    )
}

并将复制指令更改为:

copyArtifacts projectName: "my-upstream-project/${params.upstreamJobName}", 
              selector: upstream(),
              filter: '*.jar',
              fingerprintArtifacts: true

瞧,

  

从“我的上游项目»my-tag”内部版本1中复制了1个工件