如何处理Jenkins上的并发Maven构建?

too*_*asr 5 java maven jenkins

我经常使用Jenkins,并在集群上运行许多不同的工作.偶尔会有一个工作因一些模糊的错误而失败,我已经能够调试这个事实,即工作A正在使用工件X而工作B刚刚下载或者构建了一个新版本(使用maven) .

作业A失败,java.lang.NoClassDefFoundError或其他一些ZIP文件被Java或正在使用的ZIP实现损坏或段错误.

因此,显而易见的解决方案是使用私有本地maven存储库来完成这些工作,但这是非常昂贵的磁盘和互联网解决方案 这意味着每个工作的专家都会下载整个互联网.

对于某些情况,从JAR文件中急切加载类损坏的类文件通常会帮助我们限制损坏,但不希望对所有内容都这样做.

还有其他方法吗?某种改进的存储库锁定?

kan*_*kan 4

是的,看起来 maven 不喜欢并发访问单个本地存储库(最近打开了一个问题,就在 7 年前)。为每个作业创建存储库可能会非常庞大​​。但是,有一个变量$EXECUTOR_NUMBER,所以也许您可以使用它为每个 Jenkins 执行器创建 Maven 本地存储库。

  • 最好使用 Jenkins 中的配置选项为每个作业或执行器创建一个存储库。 (2认同)