使用Jenkinsfile的多配置项目(构建管道插件)

时间:2016-04-04 21:44:14

标签: jenkins jenkins-plugins jenkins-pipeline

我正在尝试创建一个多配置项目,该项目测试一组定义兼容性矩阵的构建(例如通过浏览器和操作系统)。我想通过Jenkinsfile定义单个组合的步骤。

我怎样才能做到这一点?我可以创建一个依赖于JenkinsFile的管道参数化构建,但我无法弄清楚如何将它连接到多配置构建。

1 个答案:

答案 0 :(得分:4)

似乎不可能在多配置项目中将Jenkins文件作为构建步骤。 Jenkinsfile用于管道作业,也是作业类型,Jenkins不支持(简单)在作业类型之间进行转换。除此之外,buildstep意味着它在执行程序槽中的特定节点上运行。然而,Jenkinsfile在master上进行了评估,并且它自己定义了buildsteps(带有它们的节点标签),如果它在buildstep本身中运行,它本身就会发生冲突。

可以通过多配置作业触发管道,并为其提供来自多配置作业的参数。 (我还使用参数化触发器插件来执行此操作)

我的管道作业有两个文本参数labelversion,其示例Jenkinsfile如下所示:

node(this.label){
  println this.version   
}

我的多配置作业具有以下配置:

  • 自定义轴version,其值为alpha beta gamma,从轴label具有所选节点
  • 构建步骤“触发/调用构建在其他项目上”以使用预定义参数version=${version}label=${label}
  • 触发我的管道作业

此设置导致管道作业被调用3次(因为我只选择了一个节点),每次使用不同的版本并在我指定的标签上运行。这是其中一个日志:

[Pipeline] node
Running on master in /var/lib/jenkins/jobs/pipelinejob/workspace
[Pipeline] {
[Pipeline] echo
gamma
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

如果您只想传递基于文本的参数或标签名称,则此解决方案有效。如果你想做一些像“使用不同的jdks构建”这样的东西,那将会相当棘手。我希望它仍然有用。