1

第一次搭建 Jenkins CI 系统时,我想知道如何处理快照依赖和本地 Maven 存储库。

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

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

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

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

4

1 回答 1

2

我们最终为此使用了策略 C

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

于 2012-09-12T06:59:40.597 回答