繁体   English   中英

沙盒Maven基于Jenkins

[英]Sandboxed Maven builds on Jenkins

我正在尝试为以下难题找到解决方案。 我有由maven管理的Java项目,该项目需要一些本机依赖项才能运行(运行单元和集成测试)。 这些以deb软件包的形式提供,需要在运行构建之前安装。

我将詹金斯用于CI。 本地依赖项无法安装在Jenkins节点上,因为与其他内部版本存在冲突,并且它们经常更改。 我现在要做的不是创建Jenkins作业类型“ maven”,而是创建“ freestyle”并使用pbuilder创建一个干净的沙箱,安装所有必需的组件并调用maven build。

这很有效,但是我失去了Jenkins的maven好东西,例如自动上游项目,在依赖项更改时触发构建等。Jenkins根本不知道maven在那儿。

最后,我的问题。 有没有办法实现这两个目标,隔离构建,使已安装的库不影响其他构建,并利用Jenkins应用于Maven构建及其依赖项的“魔力”?

您可以将构建分为三个作业,这将触发下一个作业。

  1. 创建所需的环境
  2. 运行Maven工作
  3. 清理

使用分布式Jenkins构建可以解决该问题。 可以配置从属代理为每个构建提供干净的环境(例如,通过VM,docker等),并在构建完成后将其拆除。 这样,詹金斯的工作可以是Maven类型的,并且预构建步骤所做的任何更改都不会影响其他人。

可以在此处找到更多信息。

考虑码头工人。 在那里,您可以根据需要在隔离的环境中运行流程。 Docker的工作方式可轻松与Jenkins进行通信。

作为一项好处,您还可以使用该Docker容器在与Jenkins中运行的环境相同的环境中运行本地构建。

即使是Freestyle作业也具有“调用顶级Maven目标”。 您可以使用它来获得“ maven好东西”,同时还具有运行其他构建步骤的能力。

有一个“使用私有Maven存储库”选项,可以确保它使用相对于工作区的.m2/repository文件夹位置。 如果需要分成多个作业,则可以在这些作业之间使用“自定义/共享工作区”。

即使在Maven风格的作业中,也可以使用私有存储库,因此一个作业不会影响另一个作业。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM