如何将构建工件传递到Jenkins中的另一个作业

时间:2016-05-27 14:38:20

标签: jenkins deployment parameterized

设置

我在詹金斯有两份工作:

  • build master - 这会构建代码并创建工件
  • deploy master - 这会部署工件

目前,deploy master已经"从另一个项目复制工件"使用"最新成功构建"。

构建步骤

build-master

我的目标

我想从"最新的成功构建中改变这一步" to"由构建参数指定"这样我就可以在部署时选择特定的构建,而不必每次都修改deploy master作业的配置。

我尝试了什么

首先,我更改为"由构建参数"。

指定

build-specific

然后我选中&#34旁边的方框;此项目已参数化"并为BUILD_SELECTOR添加了一个字符串参数。

parameter

然后我选择了构建并输入输入47,这是build master作业中的内部版本号。

另外我尝试了api调用

$.ajax({
  type: 'POST',
  url: 'https://jenkins/job/deploy%20master/build?token=abc7f5abc0c45abcea0646ed858abcde&BUILD_SELECTOR=47'
});

结果

两次失败并输出以下内容:

Started by user styfle
[EnvInject] - Loading node environment variables.
Building in workspace C:\Jenkins\jobs\deploy master\workspace
ERROR: Unable to find a build for artifact copy from: build master
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: FAILURE

问题

如何正确配置,以便在部署时指定内部版本号(或其他标识符)?

使用解决方案更新

我的解决方案归功于Gerold的答案是为复制工件添加一个"构建选择器"参数并使用新的环境变量链接到我已添加的字符串参数。

enter image description here

2 个答案:

答案 0 :(得分:5)

Jenkins每个项目/工作只有一个工作区。构建目录仅包含有关构建及其结果的信息。

两者的根目录在 Manage Jenkins 配置系统高级... 中指定。

要部署先前版本的工件,您必须将其复制到build master中的其他位置,然后再从deploy master访问该位置。

<强>更新

请参阅哪个版本的内置帮助→参数名称

  

应在上面的构建参数部分添加具有此名称的参数。有一个特殊的参数类型可供选择构建选择器。

使用 构建选择器进行复制工件 而不是字符串参数

答案 1 :(得分:2)

在下游项目中添加以下内容。 &#34;为复制工件构建选择器&#34;而不是&#34;字符串参数&#34;

"Build selector for Copy Artifact" instead of a "String Parameter"!!

从其他项目中复制工件

enter image description here

多数民众赞成。单击&#34;使用参数构建&#34;并传递内部版本号 enter image description here