如何使用多个标签 select Jenkins Pipeline 脚本中的一个节点?
How to use multiple labels to select a node in a Jenkins Pipeline script?
简介:
我们目前 运行 正在使用具有多个从节点的 Jenkins 主节点,每个从节点当前都标记有一个标签(例如,linux
、windows
、... )
在我们的脚本管道脚本(在 shared library 中定义)中,我们目前使用如下片段:
node ("linux") {
// do something on a linux node
}
或
node ("windows") {
// do something on a windows node
}
然而,随着我们测试环境的增长,我们现在有多个不同的 Linux 环境,其中一些具有或不具有某些功能(例如,一些可能能够 运行 服务 X
有些人可能不会)。
我现在想用多个标签来标记我的奴隶,表明他们的能力,例如:
- 从机 1:
linux
、serviceX
、serviceY
- 从机 2:
linux
、serviceX
、serviceZ
如果我现在需要一个能够 运行 服务 X
的 Linux 从机,我想执行以下操作 (according to this):
node ("linux" && "serviceX") {
// do something on a linux node that is able to run service X
}
然而,这失败了。
有时,也会选择一个 windows
奴隶,这不是我想要实现的。
问题:我如何根据在 Jenkins 脚本管道脚本中选择节点来定义多个标签(和组合标签)?
&&
需要是字符串的一部分,而不是逻辑 Groovy 运算符。
简介:
我们目前 运行 正在使用具有多个从节点的 Jenkins 主节点,每个从节点当前都标记有一个标签(例如,linux
、windows
、... )
在我们的脚本管道脚本(在 shared library 中定义)中,我们目前使用如下片段:
node ("linux") {
// do something on a linux node
}
或
node ("windows") {
// do something on a windows node
}
然而,随着我们测试环境的增长,我们现在有多个不同的 Linux 环境,其中一些具有或不具有某些功能(例如,一些可能能够 运行 服务 X
有些人可能不会)。
我现在想用多个标签来标记我的奴隶,表明他们的能力,例如:
- 从机 1:
linux
、serviceX
、serviceY
- 从机 2:
linux
、serviceX
、serviceZ
如果我现在需要一个能够 运行 服务 X
的 Linux 从机,我想执行以下操作 (according to this):
node ("linux" && "serviceX") {
// do something on a linux node that is able to run service X
}
然而,这失败了。
有时,也会选择一个 windows
奴隶,这不是我想要实现的。
问题:我如何根据在 Jenkins 脚本管道脚本中选择节点来定义多个标签(和组合标签)?
&&
需要是字符串的一部分,而不是逻辑 Groovy 运算符。