请注意:问题基于旧的,现在称为“脚本”的管道格式 . 使用“声明性管道”时,并行块可以嵌套在阶段块内(请参阅带有声明性管道1.2的并行阶段) .
我想知道如何将并行步骤与Jenkins工作流/管道插件一起使用,尤其是 . 如何将它们与构建阶段混合 . 我知道一般模式:
parallel(firstTask: {
// Do some stuff
}, secondTask: {
// Do some other stuff in parallel
})
但是,我想并行运行几个阶段(在同一节点上,有多个执行程序),所以我尝试添加这样的阶段:
stage 'A'
// Do some preparation stuff
parallel(firstTask: {
stage 'B1'
// Do some stuff
}, secondTask: {
stage 'B2'
// Do some other stuff in parallel
})
stage 'C'
// Finalizing stuff
这不能按预期工作 . “do stuff”任务是并行执行的,但并行阶段会立即结束,并且不包含它们应包含的内容 . 因此,舞台视图不会显示正确的结果,也不会链接日志 .
我可以并行构建不同的阶段,还是仅仅意味着在单个阶段中使用的“并行”步骤?
5 回答
您不能将已弃用的非块范围的
stage
(如原始问题中)放在parallel
中 .截至JENKINS-26107,
stage
采用块参数 . 您可以将parallel
放在stage
或stage
里面parallel
或stage
里面stage
等 . 但是不能保证构建的可视化支持所有嵌套;特别是内置管道步骤(列出构建运行的每个步骤的“树表”)显示任意
stage
嵌套 .Pipeline Stage View plugin目前仅按照它们开始的顺序显示阶段的线性列表,而不管嵌套结构如何 .
Blue Ocean将显示顶级阶段,以及顶级阶段内的
parallel
分支,但目前不再有 .JENKINS-27394,如果实现,将显示任意嵌套的
stage
.现在不推荐使用该语法,您将收到以下错误:
你应该做的事情如下:
只是在这里添加节点的使用,在多个构建服务器/ VM之间分配作业:
应将所有VM标记为用作池 .
我刚刚测试了以下管道,它的工作原理
这个名为'trigger-test'的Job接受一个名为'Environment'的参数
Job'test1'和'test2'是简单的工作:
'test1'的示例
一个名为'Environment'的参数
管道:echo "$env.Environment-TEST1"
On execution, I am able to see both stages running in the same time
我认为现在已经正式实施:https://jenkins.io/blog/2017/09/25/declarative-1/
正如@Quartz所提到的,你可以做类似的事情