如何使用多个标签在Jenkins管道脚本中选择节点?

时间:2018-05-14 10:14:23

标签: jenkins jenkins-pipeline jenkins-slave

说明:

我们目前正在运行一个带有多个从属节点的Jenkins主节点,每个节点当前都标有一个标签(例如linuxwindows,...)

在我们的脚本管道脚本(在shared library中定义)中,我们目前使用如下代码片段:

node ("linux") {
    // do something on a linux node
}

node ("windows") {
    // do something on a windows node
}

然而,随着我们的测试环境的增长,我们现在拥有多个不同的Linux环境,其中一些具有或不具备某些功能(例如,某些可能能够运行服务X而有些可能不运行)。

我想用多个标签标记我的奴隶,表明他们的能力,例如:

  • 奴隶1:linuxserviceXserviceY
  • 奴隶2:linuxserviceXserviceZ

如果我现在需要能够运行服务X的Linux从服务器,我想执行以下操作(according to this):

node ("linux" && "serviceX") {
    // do something on a linux node that is able to run service X
}

然而,这失败了。 有时候,windows奴隶也会被选中,这不是我想要实现的。

问题:如何根据Jenkins脚本管道脚本中选择的节点定义多个标签(和组合)?

1 个答案:

答案 0 :(得分:7)

&&需要是字符串的一部分,而不是逻辑Groovy运算符。