gpt4 book ai didi

jenkins - 使用 jenkins 管道插件实现动态并行构建的想法

转载 作者:行者123 更新时间:2023-12-04 16:38:52 26 4
gpt4 key购买 nike

我需要并行运行一组构建任务,构建任务是动态的,它可能会改变。我需要一些帮助来实现下面的细节。

构建的任务详细信息将在 xml 中动态生成,其中包含必须并行/串行执行哪些任务的信息

例子:

说有一个构建A。

其中有下面的任务和执行顺序,第一个任务1必须执行,接下来的任务2和任务3将并行执行,接下来是任务4

任务1
任务2,任务3
任务 4

这些详细信息将在动态生成的 xml 中,我如何使用管道插件解析该 xml 并相应地安排任务。我需要一些想法开始。

最佳答案

您可以使用 Groovy 从工作区( readFile )读取文件,然后生成包含不同闭包的映射,类似于以下内容:

parallel(
task2: {
node {
unstash('my-workspace')
sh('...')
}
},
task3: {
node {
unstash('my-workspace')
sh('...')
}
}
}

为了生成这样的数据结构,您只需在 Groovy 中对使用 XML 解析读取的任务数据迭代之前读取的文件内容。

有时,我昨天谈到了管道,并包含了非常相似的例子( presentation,幻灯片 34ff。)。相比之下,我从另一个命令输出中读取了“任务”列表。完整代码可见 here (我避免在此处粘贴所有内容,而是引用此场外资源)。

魔术位的种类如下:

def parallelConverge(ArrayList<String> instanceNames) {
def parallelNodes = [:]

for (int i = 0; i < instanceNames.size(); i++) {
def instanceName = instanceNames.get(i)
parallelNodes[instanceName] = this.getNodeForInstance(instanceName)
}

parallel parallelNodes
}

def Closure getNodeForInstance(String instanceName) {
return {
// this node (one per instance) is later executed in parallel
node {
// restore workspace
unstash('my-workspace')

sh('kitchen test --destroy always ' + instanceName)
}
}
}

关于jenkins - 使用 jenkins 管道插件实现动态并行构建的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40173194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com