我正在尝试创建一个作业,该作业将多次运行某个流程,每次在多个节点上并行使用不同的参数。我有一个 csv 文件,其中每一行都包含运行所需的参数。我尝试使用多配置作业,并且阅读了有关动态轴的信息,但我不太了解如何将其与 csv 文件中的数据一起使用。我还看到了构建流程和工作流插件,但同样,我无法理解如何将它与我的 csv 文件一起使用。
如果有人能告诉我如何解决这个问题,我将不胜感激。
提前致谢,
西万
我正在尝试创建一个作业,该作业将多次运行某个流程,每次在多个节点上并行使用不同的参数。我有一个 csv 文件,其中每一行都包含运行所需的参数。我尝试使用多配置作业,并且阅读了有关动态轴的信息,但我不太了解如何将其与 csv 文件中的数据一起使用。我还看到了构建流程和工作流插件,但同样,我无法理解如何将它与我的 csv 文件一起使用。
如果有人能告诉我如何解决这个问题,我将不胜感激。
提前致谢,
西万
在没有 eachLine 闭包的解决方案下(在 Jenkins 版本 2.89.3 中工作)。像 eachLine 这样的一些闭包在 Jenkins 中似乎仍然被打破。
def nodes = [:]
readFile("input.csv").split('\n').eachWithIndex { line, index ->
def params = line.split(',')
nodes[name] = {
// ...
}
如果你不需要计数器,你可以使用 'each' 代替
readFile("input.csv").split('\n').each { line -> ... }
使用工作流插件,您可以读取文件,使用标准 groovy 解析内容,然后设置节点 - 类似于
def nodes = [:]
readFile("myfile.csv").eachLine { line, count ->
def params = line.split(',')
nodes["line${count}"] = {
node {
// do stuff
}
}
}
parallel nodes
如果您不需要 count 变量,则可以改用 splitEachLine
def nodes = [:]
readFile("abc.csv").splitEachLine(/,/) { runName, param2, p3 ->
nodes[runName] = {
// dostuff with param2, p3
}
}