如何在循环中将 Jenkinsfile 参数值作为字符串访问

Sam*_*gee 2 groovy gstring jenkins-pipeline

在我们的 Jenkinsfile 中,我们有很多参数(参数化构建),在这种情况下,我想检查每个参数是否被切换并对其采取行动。这些参数具有相似的名称,但以不同的小数结尾,因此我想对它们进行迭代以实现此目的。

我有类似的东西:

if ("${TEST_00}" == "true") { testTasksToRun.add(testsList[0]) }
if ("${TEST_01}" == "true") { testTasksToRun.add(testsList[1]) }
if ("${TEST_02}" == "true") { testTasksToRun.add(testsList[2]) }
if ("${TEST_03}" == "true") { testTasksToRun.add(testsList[3]) }
if ("${TEST_04}" == "true") { testTasksToRun.add(testsList[4]) }
if ("${TEST_05}" == "true") { testTasksToRun.add(testsList[5]) }
Run Code Online (Sandbox Code Playgroud)

但我想有类似的东西:

for(int i=0; i<testsList.size(); i++) {
    if ("${TEST_0${i}}" == "true") {
        testTasksToRun.add(testsList[i])
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图寻找解决方案并在 GroovyConsole 上进行试验,但没有设法让任何事情发挥作用。看起来它与“绑定”有关,但我对此并不熟悉。

mko*_*bit 5

paramsGlobalVariable访问时返回不可修改的映射。您可以在此处查看实现。

因为它返回 a Map,所以您可以使用与普通 Groovy 映射相同的策略来迭代它。

params.each { key, value ->
  // do things
}
Run Code Online (Sandbox Code Playgroud)
for (entry in params) {
  // entry.key or entry.value
}
Run Code Online (Sandbox Code Playgroud)

由于JENKINS-26481已解决,较新版本的 Groovy CPS 库应该可以处理大多数迭代情况。