如何使用多个标签 select Jenkins Pipeline 脚本中的一个节点?

How to use multiple labels to select a node in a Jenkins Pipeline script?

简介:

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

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

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

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

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

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

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

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

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


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

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