我经常使用Jenkins,并在群集上运行许多不同的作业。偶尔的工作会因为一些模糊的错误而失败,并且我已经能够调试这个事实,即工作A正在使用工件X并且工作B刚刚下载或者构建了一个新版本的工作(带有行家)。
作业A因java.lang.NoClassDefFoundError或ZIP正在使用的某些ZIP实现中的ZIP文件损坏或段错误而失败。
因此,显而易见的解决方案是使用私有本地maven存储库来完成这些工作,但这是非常昂贵的磁盘和互联网解决方案。这意味着每个职位的专家都会下载整个互联网。
对于某些情况,从JAR文件中急切加载损坏的类文件通常会帮助我们限制损坏但不想为所有内容做到这一点。
还有其他解决方案吗?某种改进的存储库锁定?
答案 0 :(得分:4)
是的,看起来maven不喜欢并发访问单个本地存储库(最近刚刚开始issue,仅仅7年前)。为每项工作创建回购可能非常庞大。但是,有一个变量$EXECUTOR_NUMBER
,所以也许您可以使用它为每个Jenkins执行程序创建maven本地存储库。