19

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

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

4

1 回答 1

5

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

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

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

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

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

  • version具有值的自定义轴和具有选定节点alpha beta gamma的从轴label
  • buildstep“触发/调用在其他项目上构建”以使用预定义的参数触发我的管道作业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 构建”之类的事情,使用起来会相当棘手。我希望它仍然有帮助。

于 2017-01-20T13:56:47.923 回答