我正在尝试创建一个多配置项目,该项目测试一组定义兼容性矩阵的构建(例如通过浏览器和操作系统)。我想通过Jenkinsfile
定义单个组合的步骤。
我怎样才能做到这一点?我可以创建一个依赖于JenkinsFile的管道参数化构建,但我无法弄清楚如何将它连接到多配置构建。
答案 0 :(得分:4)
似乎不可能在多配置项目中将Jenkins文件作为构建步骤。 Jenkinsfile用于管道作业,也是作业类型,Jenkins不支持(简单)在作业类型之间进行转换。除此之外,buildstep意味着它在执行程序槽中的特定节点上运行。然而,Jenkinsfile在master上进行了评估,并且它自己定义了buildsteps(带有它们的节点标签),如果它在buildstep本身中运行,它本身就会发生冲突。
可以通过多配置作业触发管道,并为其提供来自多配置作业的参数。 (我还使用参数化触发器插件来执行此操作)
我的管道作业有两个文本参数label
和version
,其示例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构建”这样的东西,那将会相当棘手。我希望它仍然有用。