2012-09-11 58 views
1

第一次设置Jenkins CI系统时,我想知道如何处理快照依赖关系和本地Maven存储库。快照依赖关系的持续集成策略(与Jenkins)

我们有一个具有依赖项Y的工件X. Jenkins被配置为每次Y有一个提交时构建X.

策略A(工作空间Maven仓库):
的本地仓库被配置为 “本地到工作区”。这意味着每个构建的作业都有自己的存储库。 Y提交会触发构建(“mvn clean install”),但由于构建版本X和版本库Y是隔离的,所以X使用最后的版本Y,而不是最后一次提交。
使用此策略似乎很有用,可以检测是否还部署了所有依赖关系,但它不会检测到集成问题(中断Y提交中断X)。

战略B(共用Maven仓库):
詹金斯使用公共的本地仓库。 (断开的)Y快照的提交触发使用当前Y快照的X的构建,并且检测到集成问题。缺点是,这不会检测是否所有构建依赖项都部署到中央快照储存库(因为CI系统确实已将它们全部安装在本地储存库中)。

有没有一种结合了A和B优点的策略?

回答

2

我们结束了使用战略C此:

策略C(让詹金斯部署):
每个职业都有它的本地资源库的本地工作区像战略A.但不是默认的“干净安装”目标,Jenkins被配置为在每个作业上执行“-U clean deploy”。因此,如果Y被破坏并提交,Jenkins将构建它并将其部署到中央快照存储库。 Jenkins检测到依赖关系Y的构建,并用最新的Y快照构建X.
对于这个策略很有用 - 至少在Maven 3中 - 在中央快照库上运行一个自动清理工作,因为会有很多时间戳快照。