我试图让以下工作流程在 Jenkins 中并行运行。例如,A 和 B 同时运行。一旦A完成同时运行A2和A3,等等......
这似乎是一个非常常见的用例,但我尝试的大多数插件不支持超过 1 级深度,下面的 A 分支就是这种情况。加入插件在这里似乎没有帮助。
我阅读了有关使用 Promotion 插件的信息,但对于要归档哪些指纹/工件以使其工作,我有点困惑。
关于如何使这个简单的构建管道工作的任何线索?
我试图让以下工作流程在 Jenkins 中并行运行。例如,A 和 B 同时运行。一旦A完成同时运行A2和A3,等等......
这似乎是一个非常常见的用例,但我尝试的大多数插件不支持超过 1 级深度,下面的 A 分支就是这种情况。加入插件在这里似乎没有帮助。
我阅读了有关使用 Promotion 插件的信息,但对于要归档哪些指纹/工件以使其工作,我有点困惑。
关于如何使这个简单的构建管道工作的任何线索?
正如jgritty指出的那样,您可以使用Build flow plugin。为了获得您想要的并行执行类型,您可以运行与以下构建流程脚本等效的内容:
buildTrigger = build("Trigger")
parallel(
{
buildA = build("A")
buildA1 = build("A1")
parallel(
{
buildA2 = build("A2")
},
{
buildA3 = build("A3")
},
)
},
{
buildB = build("B")
buildB1 = build("B1")
},
)
buildResults = build("GatherResult")
在这个脚本中,第一个parallel
块负责 A 和 B 分支。一旦在一个分支中,每个构建都是连续的,直到您添加更多parallel
块。
有一个很好的解决方案:Multi-Job 插件。它完全符合您的要求。使用MultiJob 插件,您可以将您的工作拆分为连续运行的阶段。在每个阶段中,作业并行运行。
为简单起见,我将假设 A 和 B 是您希望并行运行的“编译作业”。进一步假设可能存在 A-Test(及其子项)和 B-Test,它们也是单独的工作。
您按如下方式创建多作业:新项目 -> 多作业项目
在项目中,您创建两个阶段(添加构建步骤“MultiJob Phase”)。第一个将是编译,您将添加阶段作业的“A”和“B”。
您可以更改 COMPILE 阶段作业的选项,以便如果其中一个失败,整个阶段中止(默认),或允许作业继续。
接下来,为 TEST 添加另一个 MultiJob Phase Build步骤,并向其中添加“A-Test”和“B-Test”。请记住,A、B、A-Test 和 B-Test 都是单独的作业,如果需要也可以单独运行。
而已。当作业运行时,它将包含指向子作业的链接,因此您可以看到子作业发生了什么。
我遇到了类似的问题,Promoted Builds Plugin比其他人建议的 Build Flow Plugin 对我来说是一个更好的解决方案。
通过勾选复选框“Promote builds when...”,可以将构建提升作业添加到现有作业。您可以通过在 Criteria 下选中“当以下下游项目构建成功时”来配置在命名的下游项目完成时进行升级(假设所有下游项目都通过指纹关联)。
在提升步骤,您可以触发汇总结果的电子邮件或触发进一步的下游作业。
在这种情况下,您可以将提升作业添加到触发器项目中,并依赖项目 A2 A3 和 B1 成功完成。
我相信这可能是您需要的插件。
使用构建后部分中的构建其他项目。说完成 A1 后开始 A2、A3。在 Manage Hudson 中增加执行者的数量 --> 将系统配置为适当的数量。
我们有一个类似于“容易被逗乐的史蒂文”所建议的设置。除了我将“A”和“B”路径设置为它们自己的多作业堆栈,另一个多作业设置为“触发器”。“A”和“B”堆栈并行运行的地方。这样他们就不会直接相互依赖。您还可以根据一个/两个堆栈是否失败来汇总结果。您还可以设置“触发器”来收集参数并传递给两个堆栈。