如何在 DSL 中处理管道作业的参数?

How to handle parameters of pipeline job in DSL?

我有一个管道作业,其中 运行 是一系列作业(例如;设置 >> 运行 测试 >> 清理)。我希望此序列 运行 用于 100 个不同的工具,每个工具具有不同的参数。参数化完成。所以我可以传递不同的参数。

我正在将一个参数作为工具列表作为字符串参数传递给管道,该参数将用逗号分隔工具(例如;工具 1、工具 2、工具 3)

现在我想在所有工具中将管道更改为 运行 相同的顺序(设置 >> 运行 测试 >> 清理),工具名称作为参数传递给作业之一.

我在想我将采用这个参数值并用逗号吐出它并获取每个工具名称并在序列周围有一个 for 循环。

我可以获得 forloop 部分,它适用于多个 运行。

for (int i = 0; i < 2; ++i) {
    stage('Setup') {
        build job: 'setup', parameters: [string(name: 'tool', value:'<tool>')]
    }
    stage('Build') {
        build 'Build Job'
    }
}

但我不明白我们如何拆分参数并为 DSL 中 forloop 的每次迭代提供一个参数。有人可以帮忙吗?

jenkins 中的参数在 "param" 变量下可用。您可以使用 split () 函数将字符串拆分为字符串数组。之后,如果你想遍历所有字符串,你可以使用 for 循环,遍历数组,比如:

def tools = params.tool.split (',') // default separator is blanks
for (String part : tools)
{
    println (part)
}

有不同的迭代方式,这对我来说似乎很直观。请注意,使用特定分隔符会在字符串的逗号部分后生成空白。如果需要,您可以使用 trim () 函数将其删除。