spring boot项目之间的引用触发上下游构建

首先上下游关系是可以通过配置实现的,可以通过正向配置或反向配置实现,建议统一使用一种。

先理解一下上游下游的概念,目前我的dao项目作为一个基础类库,然后mtex-auth引入依赖dao,那么dao就是mtex-auth的上游,mtex-auth就是dao的下游

在这情况下,上游dao主动去建立和下游的mtex-auth的关系,则为正向配置,而下游mtex-auth主动去建立和上游dao的关系,则为反向配置。

正向配置:在dao任务中找到 构建后操作模块增加构建后操作步骤,选择构建其他工程,在该路径填写mtex-auth任务名称,则dao构建成功后会主动触发mtex-auth任务进行构建
jenkins-1
jenkins-2

反向配置:在mtex任务中找到 构建触发器模块,勾选其他工程构建后触发并填写dao任务名称
jenkins-3

在我的理解中,不管正向配置还是反向配置,作用都是一样的,都是建立上下游关系,上游构建成功后触发下游构建,所以建议只使用一种配置,没必要双向关系.

配置好上下游权限后,建议每一个下游任务的配置中增加限制,打开任务进入General模块,点击高级,勾选该项目上游正在构建时阻止该项目构建选项.
jenkins-4

设想一下,如果存在项目关系如下:

  • A项目作为B项目的上游

  • A项目作为C项目的上游

  • B项目作为C项目的上游

那么在A项目构建成功后,逻辑来讲它是会触发两个下游之间的构建,也就是B项目和C项目同时构建,等B项目构建完会再次触发一次C项目的构建。而通过勾选上游构建时阻止构建下游,就能避免这个问题。

最理想的构建顺序是 A-B-C ,那么在A任务的正向配置中,则不需要配置下游项目C,只需要配置下游项目B,反向配置也一样。

其次,在任务模块构建触发器中,建议关闭 Build whenever a SNAPSHOT dependency is built,因为该配置会根据pom文件的快照项目依赖自动创建上下游关系,导致和正反向配置重复并可能出现多次打包的情况。

jenkins持续集成构建

任务关系依赖可能出现这种情况,A、B、C项目都作为D项目的上游,而A、B、C又是单独互不影响的项目,这时候它们是可以进行并发构建的,可是这样就会触发D项目的3次构建,这明显是不合理的,那么怎么做到 A、B、C项目同时构建,然后再触发下游D项目的构建呢?

首先安装一个串行的插件 Multijob,它支持将任务捆绑构建。我们需要先解除A、B、C项目和D项目的上下游关系,也就是取消正反向配置,并且取消A、B、C任务中General模块的 该项目上游正在构建时阻止该项目构建配置,切记必须取消,否则无法进行构建.

新建任务,选择 Multijob Project,创建一个任务E。
jenkins-5

找到构建模块,点击增加构建步骤并选择Multijob Phase,并依次添加A、B、C任务名称
jenkins-6
jenkins-7

这个时候可以点击每个任务右下角的高级进行详细配置
jenkins-8
jenkins-9
构建方式可以选择 串行或者并行,串行的话则按照添加任务的顺序进行构建,并行则同时构建。

构建条件可以选择 构建成功触发、构建失败触发、无论结果如何都触发等操作,按需求配置。

配置完成后关联E项目和D项目之间的上下游关系,并配置该项目上游正在构建时阻止该项目构建即可,就能满足触发E项目时, 触发A、B、C项目同时构建,然后再触发下游D项目的构建的操作。

这个时候如果项目是并行的,必须设置jenkins的最大并行执行器的数量,系统管理->系统设置->填写执行器数量

最后更新: 2020年11月12日 12:16

原始链接: https://midkuro.gitee.io/2020/05/20/jenkins-upstream/

× 请我吃糖~
打赏二维码