我正试图为下面的谜题找到一个解决方案。我有由maven管理的java项目,它需要一些本地依赖项才能工作(运行单元和集成测试)。这些都是以deb包的形式提供的,这些包需要在运行生成之前安装。
我用詹金斯做CI。由于与其他构建的冲突,无法在Jenkins节点上安装本机依赖项,而且这些依赖项可能经常更改。我现在所做的不是创建Jenkins作业类型' maven ',而是创建'freestyle‘,并使用pbuilder创建一个干净的沙箱,安装所需的一切并调用maven构建。
这很好,但我正在失去Jenkins maven的好处,比如自动上游项目,在依赖关系更改时触发构建,等等。Jenkins根本不知道maven在那里。
最后,我的问题。是否有一种方法可以实现这两种方法:隔离构建,这样安装的库不会影响其他构建,并利用Jenkins的“魔力”应用于maven构建及其依赖项?
发布于 2015-04-18 13:51:57
这个问题可以通过使用分布式Jenkins构建来解决。可以将从代理配置为提供干净的环境(例如通过VM、docker、.)对于每个构建,并在构建完成后将其拆卸。通过这种方式,Jenkins作业可以是Maven类型,并且任何由预构建步骤所做的更改都不会影响其他人。
更多信息可以找到这里。
发布于 2015-04-16 06:22:59
您可以将构建分成三个作业,这将触发下一个作业。
发布于 2015-04-16 13:36:54
即使是自由式作业也有“调用顶级Maven目标”。您可以使用它获得"maven的好处“,同时还可以运行其他构建步骤。
有一个选项是“使用私有Maven存储库”,这将确保它将使用相对于工作区的.m2/repository文件夹位置。如果需要分离为多个作业,则可以在这些作业之间使用“自定义/共享工作区”。
即使在Maven风格的作业中,也有使用私有存储库的选项,这样一个作业就不会影响另一个作业。
https://stackoverflow.com/questions/29666695
复制相似问题