詹金斯:我应该为我的构建使用不同的本地maven存储库吗?
我有一个Jenkins实例运行多个微服务和库的构建 目前,我的构建配置为所有作业都使用不同的本地存储库位置詹金斯:我应该为我的构建使用不同的本地maven存储库吗?,maven,jenkins,continuous-integration,Maven,Jenkins,Continuous Integration,我有一个Jenkins实例运行多个微服务和库的构建 目前,我的构建配置为所有作业都使用不同的本地存储库位置$WORKSPACE/.m2/repository 这很好,因为构建之间没有相互影响的方式,但是,构建显然要长得多,因为它们每次都需要下载所有依赖项 你认为什么是更好的解决方案?我应该保持当前配置,还是对所有作业使用相同的本地回购位置足够安全 有没有办法确保构建不会相互影响,即使本地回购协议相同 我想到的是,我可以配置项目,以便每次都更新所有快照。这够了吗?如何从我的设置.xml执行此操作
$WORKSPACE/.m2/repository
这很好,因为构建之间没有相互影响的方式,但是,构建显然要长得多,因为它们每次都需要下载所有依赖项
你认为什么是更好的解决方案?我应该保持当前配置,还是对所有作业使用相同的本地回购位置足够安全
有没有办法确保构建不会相互影响,即使本地回购协议相同
我想到的是,我可以配置项目,以便每次都更新所有快照。这够了吗?如何从我的设置.xml
执行此操作
我在评论中提出了一些问题,我认为在这里回答这些问题更好,因此: 为什么每次生成之前都要删除存储库文件夹 因为回购在jenkins作业文件夹中(当前)。我清理作业文件夹,因为我有时需要在构建期间修改pom。(为发布更改版本) 你们有很多分支机构吗?您是否使用存储库管理器 是的,我喜欢 你有多少个jenkins节点 目前只有一个,但将来可能会改变 如何在Jenkins(意思是)的基础上构建您在Jenkins中使用的确切maven执行命令
我使用了
mvn clean deploy
,还有一些附加属性我当前的解决方案是在jenkins home之外创建一个目录,/maven/.m2/repository/
。但这不是本地存储库本身
实际的存储库是:
/maven/.m2/repository/${env.JOB_NAME}
。这样,我可以为每个作业获得不同的repo,但在为作业删除工作区时不会将其删除。无论您做什么,请确保一次不会有多个生成使用一个本地存储库。本地存储库对于并发使用不安全。如果两个生成尝试更新同一快照,则很容易破坏元数据。是否在每个生成之前/之后删除.repository
?是的,我每次都从一个干净的开始。也许这是我可以提高绩效的另一个方向。你为什么这么做?如何在Jenkins(意思是)的基础上构建您在Jenkins中使用的确切maven执行命令?你们有很多分支机构吗?另一件事是:您是否使用存储库管理器?你有多少个jenkins节点?我在编辑中回答了你的问题基于这种情况,我只会使用位于jenkins中每个工作区的存储库。但我不会在构建之前/之后删除每个构建的空间。此外,我想知道你的建设需要多少时间?您有多少个模块/测试/等?