如何在Jenkins中构建一系列作业的流水线?

4
在我的项目中,我有 3 个 Web 应用程序都依赖于一个名为 "all-commons" 的项目。在我的 Jenkins 服务器上,我建立了 4 个任务,即 "all-commons_RELEASE"、"web-A_RELEASE"、"web-B_RELEASE" 和 "web-C_RELEASE"。这些任务的作用是构建应用程序,然后部署到我们的 Nexus 上。之后,有人会从 Nexus 中检索这些应用程序并将它们部署到我们的开发/测试服务器上。
我想要的是,有一个(附加的)任务以顺序方式启动所有 4 个构建。这样,在完成该任务后,所有的 RELEASE 构建都已经执行完毕。当然,如果有一个构建失败了,整个过程就会停止。
我的第一个想法是在 "all-commons_RELEASE" 的 "后构建操作" 中的 "构建其他项目" 列表中指定 "web-A_RELEASE"。然后,"web-B_RELEASE" 依赖于 "web-A_RELEASE",以此类推。
然而,我想能够单独启动其中任何一个构建,如果我指定了项目的依赖关系,这是不可能的。例如,如果我手动启动了 "web-B_RELEASE",那么 "web-C_RELEASE" 将在其后被构建,这不是我想要的...
你有什么想法如何实现这一点,或者有插件可以帮助我完成这个任务吗?
敬礼。
Ps: Jenkins 1.430,所有的 RELEASE 任务都是自由式项目(它们混合使用 Maven 和 bash 命令)。

顺便说一下,我已经尝试了Build Pipeline插件(https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin),但它对我没有帮助,因为它需要直接在作业中定义依赖项。或者我在这个插件中错过了什么? - Romain Linsolas
我们正在使用管道插件来处理你所描述的情况。这些作业必须手动触发。 - leenasn
3个回答

3
也许你可以使用参数化触发插件
使用该插件,您可以将触发器设置为您的“Pipeline”作业中的构建步骤。有一个复选框“阻止直到触发的作业完成”,您需要激活它。您可以简单地配置您的三个作业以这种方式触发,并且只有在运行此新管道作业时触发才会发生,因此运行其他作业而不触发任何内容也可以正常工作。
这应该是您需要的完美解决方案。

2
不知道你是否已经找到了答案,但是对于其他好奇的人:
您可以创建另一个名为“build_all”的作业,并将每个其他构建作为构建步骤触发。
对于“build_all”,您需要设置如下所示的设置,其中每个构建步骤都是“触发/调用其他项目上的构建”:
- 构建步骤1:all-commons_RELEASE - 构建步骤2:web-A_RELEASE - 构建步骤3:web-B_RELEASE - 构建步骤4:web-C_RELEASE
请确保选中“阻止直到触发的项目完成其构建”选项,以确保按顺序进行构建。

1

请尝试以下操作:

构建流程插件

您可以按顺序运行或构建作业,如下所示:

build("job1")
build("job2")
.
.
build("job-n")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接