如何在詹金斯建立一个工作流程?

时间:2011-09-23 12:25:22

标签: continuous-integration hudson jenkins

在我的项目中,我有3个网络应用程序,全部依赖于一个all-commons项目。

在我的Jenkins服务器中,我构建了4个作业all-commons_RELEASEweb-A_RELEASEweb-B_RELEASEweb-C_RELEASE。 这些工作的作用是构建部署在Nexus上的工件。然后,有人在Nexus中检索这些工件并将它们部署在我们的开发/认证服务器上。

我想要的是,有一个(额外的?)作业将以顺序方式启动所有4个版本。 这样,一旦完成此作业,所有RELEASE作业都已执行。 当然,如果一个构建失败,则该过程停止。

我的第一个想法是在web-A_RELEASE构建后操作构建其他项目列表中指出all-commons_RELEASE。 然后,web-B_RELEASE依赖于web-A_RELEASE,依此类推。

但是,我希望能够单独启动它们,如果我指出对项目的依赖性,这是不可能的。例如,如果我手动启动web-B_RELEASE,那么之后会构建web-C_RELEASE,这不是我想要的......

你知道我是如何实现这一目标的,还是一个帮助我做到这一点的插件?

问候。

ps:Jenkins 1.430,所有RELEASE作业都是自由式项目(它们混合了Maven和bash命令)。

3 个答案:

答案 0 :(得分:3)

也许您可以使用Parametrized Trigger Plugin

使用该插件,您可以将触发器设置为“管道”作业中的构建步骤。有一个复选框“阻止直到触发的作业完成”,您需要激活该复选框。您可以简单地将这三个作业配置为以这种方式触发,并且只有在运行此新管道作业时才会触发,因此运行其他作业而不触发任何操作都可以正常工作。

这应该是你所需要的。

答案 1 :(得分:2)

不知道你是否已找到答案,但对于其他好奇的人来说:

您可以创建另一个作业 build_all ,然后将每个其他构建作为构建步骤触发。

您想要的设置对于 build_all 看起来像这样,每个构建步骤都是“在其他项目上触发/调用构建”

     
  • 构建步骤1:all-commons_RELEASE
  •  
  • 构建第2步:web-A_RELEASE
  •  
  • 构建第3步:web-B_RELEASE
  •  
  • 构建第4步:web-C_RELEASE

确保选中“阻止直到触发的项目完成构建”选项,以确保构建顺序发生。

答案 2 :(得分:1)

试试这个

Build Flow plugin

你可以按顺序运行或建立你的工作:

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