Jenkins脚本将所有构建限制为给定节点

时间:2015-03-18 09:01:30

标签: groovy jenkins hudson

我们最近为我们的Jenkins构建环境添加了第二个从属节点,为特定构建运行不同的操作系统(Linux而不是Windows)。不出所料,这意味着我们需要通过“限制此项目可以运行的位置”设置来限制构建。但是我们有很多版本(100+),因此点击它们以手动更改此设置的前景并不令我感到兴奋。

有人可以通过Jenkins脚本控制台提供一个groovy脚本来实现这一目的吗?我过去曾使用类似的脚本来更改其他设置,但我找不到任何有关此特定设置的参考。

2 个答案:

答案 0 :(得分:8)

根据以前的脚本和Jenkins源来管理我自己的脚本。脚本如下:

import hudson.model.*
import hudson.model.labels.*
import hudson.maven.*
import hudson.tasks.*
import hudson.plugins.git.*

hudsonInstance = hudson.model.Hudson.instance
allItems = hudsonInstance.allItems
buildableItems = allItems.findAll{ job -> job instanceof BuildableItemWithBuildWrappers }

buildableItems.each { item ->
  boolean shouldSave = false
  item.allJobs.each { job ->
    job.assignedLabel = new LabelAtom('windows-x86') 
  }
}

替换' windows-x86'无论你的节点标签需要什么。您还可以根据item.name进行条件更改,以根据需要过滤掉一些作业。

答案 1 :(得分:4)

您可以尝试Jenkins Job-DSL plugin

这将允许您创建一个工作来改变您的其他工作。这可以通过在基于groovy的DSL中提供构建步骤来修改其他作业。

这里的这个会为作业添加一个标签' xxxx'。我通过将作业本身作为模板来欺骗了一下。

job{
  using 'xxxx'
  name 'xxxx'
  label 'Linux'
}

如果你们中的某些工作是不同的类型,你可能需要调整它