Gou*_*nda 5 jenkins jenkins-plugins jenkins-pipeline
我需要并行地为构建运行一组任务,构建的任务是动态的,它可能会改变.我需要一些帮助来实现下面的细节.
我将在xml中动态生成构建的任务细节,其中包含必须并行/串行执行哪些任务的信息
例:
说有一个构建A.
其中有下面的任务和执行顺序,第一个任务1必须执行下一个任务2,任务3将并行执行,接下来是任务4
TASK1
TASK2,TASK3
task4
这些细节将在动态生成的xml中,如何使用管道插件解析该xml并相应地调度任务.我需要一些想法开始.
Ste*_*ing 15
您可以使用Groovy从工作空间(readFile)中读取文件,然后生成包含不同闭包的映射,类似于以下内容:
parallel(
task2: {
node {
unstash('my-workspace')
sh('...')
}
},
task3: {
node {
unstash('my-workspace')
sh('...')
}
}
}
Run Code Online (Sandbox Code Playgroud)
为了生成这样的数据结构,您只需使用Groovy中的XML解析通过先前读取的文件内容迭代读取的任务数据.
有时候,我昨天发表了关于管道的讨论,其中包括非常相似的例子(演示文稿,幻灯片34ff).相反,我从另一个命令输出中读取了"任务"列表.完整的代码可以在这里找到(我避免在这里粘贴所有这些,而是引用这个异地资源).
魔术位的种类如下:
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3565 次 |
| 最近记录: |