一尘不染

Ivy,Ant,Jenkins-对一个好主意 在Jenkins建筑上?

jenkins

我们将把Ivy与Ant一起使用,并且让Jenkins进行构建。我本来以为让詹金斯(Jenkins)<ivy:cleancache/>在运行构建之前先做一个好主意。(这将是强制性的“清洁”目标的一部分)。

但是,我现在看到的<ivy:cleancache>不仅是从中清除内容<ivy:cachepath>,而且实际上是删除了整个$HOME/.ivy/cache目录。

我担心的是,如果Jenkins <ivy:cleancache>在所有构建开始之前都进行了构建,它将干扰Jenkins可能正在执行的其他构建。

这是<ivy:cleancache>一个好主意吗,特别是如果一个用户可能同时进行多个构建时?

实际上,当您<ivy:cachepath pathid="compile.path"/>在多个项目中执行操作时会发生什么?这还会影响詹金斯吗?如果同时构建多个版本,Jenkins会感到困惑compile.cachepath吗?


阅读 203

收藏
2020-07-25

共1个答案

一尘不染

在我看来,在每个版本中运行ivy cleancache任务都是过大的,并且消除了使用ivy,智能下载第三方依赖项的主要好处之一。

话虽如此,如以下相关的Maven问题所述,所有缓存都可能变脏,应定期清除:

当您从远程存储库检索所有依赖项时,本地存储库仅不过是一个缓存。

像所有缓存一样,Maven本地存储库有时可能会变得“脏”。在公认的偏执狂和过度杀伤行为中,我安排了定期的cron工作来清除构建机器上的本地存储库。这将强制与我的Nexus Maven存储库重新同步。

几个建议:

使用专用的Jenkins作业清除常春藤缓存

我的第一个建议是创建一个定期的Jenkins作业,该作业在您的构建中调用以下“全部清除”目标:

<target name="clean-all" depends="clean">
   <ivy:cleancache/>
</target>

这样可以确保Jenkins决定清除缓存的时间,并且可以将其安排为在正常构建时间之外进行(例如,每月的1号凌晨2点)

使用多个缓存隔离每个项目

我的第二条建议增加了项目构建之间的隔离度。使用caches指令将每个项目配置为拥有自己的专用缓存。在您的常春藤设置文件中。

2020-07-25