如何在Jenkins中组织参数化作业的变体构建?

时间:2017-07-12 09:17:23

标签: jenkins

我有一个参数化的作业,它带有一个名称,一个SVN存储库和一个共享目录。我需要定期调用这个工作,大约有20套这些参数。目前我刚创造了20个工作岗位,每个人都打电话给主要工作。

这是一个非常繁琐的配置,并使Jenkins的主视图变得混乱。

有更好的解决方法吗?我愿意重组工作或使用插件来隐藏"隐藏"它们。

有关这些工作的更多详情: 我实际上有两种主要工作:

  • 送货工作。我们将应用程序部署到~20个不同的共享目录。这些作业配置为每晚运行一次。 (定期触发构建)
  • 计算工作。这个基于svn存储库计算数据并将其存储在共享目录中。这些作业配置为每15分钟运行一次。
  • 这些工作可能并且应该并行运行

我需要/想要的东西:

  • 有时需要开发人员手动启动一个(或几个)配置
  • 矩阵配置插件之类的东西可以解决我的问题。如果有可能以某种方式将我的参数设置为一个轴,我会很高兴
  • Multijob将是我问题的另一个近距离解决方案,不幸的是这个' bug'阻止我:JENKINS-39678

2 个答案:

答案 0 :(得分:1)

不允许发表评论,但是@Absurd-Mind,听起来你想在一开始就建立一个适合所有人的工作并且现在就爆炸了。如果您有大约20种不同的设置,请尝试找到更大的公共基础或完全拆分它们。

另外,我们也有这样的工作....旧的shell脚本垃圾,好吧,我的一个同事围绕它构建了一个 multijob 管道,可以并行运行。在MultiJob Phase下,您可以将作业执行设置为并行。

但要小心,如果它包含像bower这样的构建工具,那么你就不能轻易擦除缓存,因为它们共享缓存。

答案 1 :(得分:1)

您可以使用Pipeline插件并编写groovy代码来执行此操作。您可以为所需的每组参数添加一组复选框输入参数,1,然后使用该组参数有条件地执行另一个作业。

image of build parameters with checkboxes

node: {
   stage ('set1') {
      if(env.build_set1) {
         build job: 'main_job', parameters: [[$class: 'StringParameterValue', name: 'name', value: 'Name1'], [$class: 'StringParameterValue', name: 'directory', value: 'dir1']]
      }
   }

   stage ('set2') {
      if(env.build_set2) {
         build job: 'main_job', parameters: [[$class: 'StringParameterValue', name: 'name', value: 'Name2'], [$class: 'StringParameterValue', name: 'directory', value: 'dir2']]
      }
   }
}

此示例按顺序运行,但您也可以make these jobs run in parallel

相关问题