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

Ank*_*han 18 jenkins jenkins-plugins jenkins-pipeline

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

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

Bri*_*top 5

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

可以通过多配置作业触发管道并为其提供来自多配置作业的参数。(我也使用了参数化触发器插件来做到这一点)

我的管道作业有两个文本参数,label以及version一个如下所示的示例 Jenkinsfile:

node(this.label){
  println this.version   
}
Run Code Online (Sandbox Code Playgroud)

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

  • version带有值的自定义轴alpha beta gammalabel带有选定节点的从轴
  • 构建步骤“在其他项目上触发/调用构建”以使用预定义的参数触发我的管道作业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
Run Code Online (Sandbox Code Playgroud)

如果您只想传递基于文本的参数或标签名称,则此解决方案有效。如果您想做诸如“使用不同的 jdks 构建”之类的操作,使用起来会相当棘手。我希望它仍然有帮助。