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

Mar*_*ger 2 jenkins jenkins-slave jenkins-pipeline

介绍:

目前,我们正在一詹金斯主多从节点,每个正在贴上了一个标签(例如linux,windows,...)

在我们的脚本管道脚本(在共享库中定义)中,我们目前使用如下所示的片段:

node ("linux") {
    // do something on a linux node
}
Run Code Online (Sandbox Code Playgroud)

要么

node ("windows") {
    // do something on a windows node
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 从1: ,,linuxserviceXserviceY
  • 从2: ,,linuxserviceXserviceZ

如果我现在需要一个能够运行服务的Linux从站X,我想做以下(根据这个):

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

然而,这失败了.有时候,windows奴隶也会被选中,这不是我想要达到的目的.


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

Ext*_*t3h 7

&&需求是字符串,而不是逻辑的Groovy操作的一部分.