将 Jenkins 作业限制为 Linux 个奴隶

Restrict Jenkins Job To Linux Slaves

如何将我的 Jenkins 工作限制在 Linux 个奴隶上 运行?

我勾选了限制这个项目可以运行框,但似乎我只能把奴隶的名字放在那里。

我想说在linux平台上使用任何运行ning的slave

类似于 TeamCity 中的 teamcity.agent.jvm.os.name 等于 Linux 选项。

编辑:到目前为止,您似乎必须手动编辑每个奴隶的标签(或编写脚本)。不幸的是,我无权更改这些,所以我会保留这个问题,以防有人提出替代方案或插件或其他东西。

你快到了。只需用标签 "linux" 或类似标签标记您的 linux 奴隶,然后将该字符串输入 限制此项目可以是 运行 字段。使用 Manage Jenkins > Manage Nodes 将标签添加到适当的从站。

  1. 如果Linux个slave数量少可以去配置slave的option,添加label为'Linux'
  2. 然后转到作业配置和select'限制此项目可以在何处运行'并添加标签为Linux。 :)

如果 Linux 个从站的数量很大,那么手动配置所有从站是一项繁重的任务。您可以使用 groovy 轻松实现自动化。创建一个作业测试作业,它将使用 'Linux' 标签更新 linux 个从属的所有标签。 Select 构建步骤为 groovy 并粘贴以下脚本:

// First Get Node Instance<br>
// Then for each node instance check if its 'Remote FS root' starts 
// with forward slash. Which means its a linux slave. If it is then 
// add label Linux to it.
def Nodes=jenkins.model.Jenkins.instance.getNodes();
Nodes.each { currentNode ->
  if (currentNode.getRemoteFS().toLowerCase().startsWith("/")) {
     if (! currentNode.getLabelString().contains("Linux")) {
      currentNode.setLabelString(currentNode.getLabelString()+" Linux")
    }
  }
}