如何在多个Jenkins作业中重用构建参数?

时间:2016-07-10 02:18:57

标签: jenkins continuous-integration

我计划在几十个工作中重复使用同一组构建参数(例如10个)。

一种方法是创建一个作业,然后克隆它。但是,如果我想在以后有数百个类似的工作时更改构建参数,该怎么办呢?一个接一个地编辑所有这些都可能是一场噩梦。

有没有办法管理参数化项目?

作为这个问题的解决方案,我会想象一些选项或插件,我可以在其中定义全局参数集并在我的工作中重复使用它们。

7 个答案:

答案 0 :(得分:5)

您可以尝试使用Configuration Slicing Plugin。此插件允许您为一组作业执行批量配置(包括参数)。

或者,您可以尝试编写一个常规管理脚本,将参数组一次性设置为所有这些作业。一个好的起点是this,请注意这只是打印当前的作业参数,你必须改变那个你想要的脚本。

答案 1 :(得分:4)

不幸的是提到Inheritance Plugin不再被维护,它有错误并且有一些限制,例如触发器参数化构建无法在父项目中实现,它也是难以覆盖特定配置,并且与Folders插件不兼容。

替代方式是:

  • Job DSL Plugin允许带有DSL的进程作业可用作模板(“种子”作业),然后将这些DSL脚本运行到您的作业中(阅读tutorial)。它在GitHub上得到了积极维护。对于更高级的解决方案,您可以使用Pipelines代替。
  • Template Project Plugin,可以设置一个模板项目,其中包含您要在其他作业中共享的所有设置(通过选择使用此项目中的所有发布者并选择模板项目

答案 2 :(得分:3)

EZ Templates Plugin怎么样(另请查看GitHub页面)?

请记住,当你创建一个模板时,那个工作实际上不应该做任何其他事情,然后做一个模板(意思是:你不应该运行那个工作)并且只在那里放置最小的常见配置,没有别的或东西会变得凌乱。那样你就不会有任何问题。

答案 3 :(得分:2)

尝试Inheritence-Plugin,这有助于解决问题。我们可以从插件描述中读取:

  

而不是必须在多个项目中多次定义相同的属性;许多项目应该可以引用仅定义一次的相同属性。换句话说,多次定义但以相同方式使用的所有内容应该只定义一次并简单地多次引用。

因此,要在多个作业中仅定义一次属性,您需要:

  1. 继承项目
  2. 创建新作业
  3. 您可以将其设置为抽象项目,选择此构建已参数化
  4. 添加可继承参数并将其设置为可覆盖
  5. 保存后,将此项目设置为父项,这样就可以继承参数。
  6. jenkins-inheritance-plugin - Inheritable Parameter

    查看Jenkins Inheritance Plugin Tutorial Video以了解主要功能的概述。另请参阅GitHub页面。

    不幸的是,插件维护得不好,使用最新的Jenkins时可能会出错(例如#22885)。

答案 4 :(得分:2)

您还可以考虑使用Pipeline Global Library

  

此插件通过在Jenkins中创建“共享库脚本”Git存储库来添加该功能。 Jenkins中的每个Pipeline脚本都会在其类路径中看到这些共享库脚本。

答案 5 :(得分:2)

使用Parameterized Trigger Plugin,您可以将属性保存在属性文件中,并将它们传递给作业。然后在您可以覆盖或使用后续作业中的原样。

这也有帮助:Retrieve parameters from properties file

答案 6 :(得分:0)

您可以使用可以在所有作业中注入的单个属性文件来管理它