我们将使用 Ivy 和 Ant,并且让 Jenkins 来完成我们的构建。我原本以为让詹金斯做一个<ivy:cleancache/>
在运行构建之前是一个好主意。 (这将是强制性“清洁”目标的一部分)。
然而,我现在看到<ivy:cleancache>
不只是清理其中的东西<ivy:cachepath>
,但确实删除了整个$HOME/.ivy/cache
目录。
我担心的是,如果詹金斯做了<ivy:cleancache>
在所有构建开始之前,它会干扰 Jenkins 可能正在执行的其他构建。
正在做一个<ivy:cleancache>
一个好主意,特别是如果单个用户可能同时进行多个构建?
事实上,当你执行以下操作时会发生什么<ivy:cachepath pathid="compile.path"/>
在多个项目中?这是否也会影响像 Jenkins 这样的东西?如果多个构建正在构建,Jenkins 会感到困惑吗?compile.cachepath
同时?
在我看来,在每个构建中运行 ivy cleancache 任务是多余的,并且消除了使用 ivy 的主要好处之一,即智能下载第 3 方依赖项。
话虽如此,正如以下相关 Maven 问题所述,所有缓存都可能变脏,应定期清除:
什么时候删除本地 Maven 存储库是安全的? https://stackoverflow.com/questions/10049948/when-is-it-safe-to-delete-the-local-maven-repository/10050239#10050239
几个建议:
使用专用的 Jenkins 作业来清除 ivy 缓存
我的第一个建议是创建一个定期的 Jenkins 作业,在构建中调用以下 clean-all 目标:
<target name="clean-all" depends="clean">
<ivy:cleancache/>
</target>
这可以确保 Jenkins 决定何时清除缓存,并且您可以将其安排在正常构建时间之外(例如每月 1 日凌晨 2 点)
使用多个缓存隔离每个项目
我的第二个建议增加了项目构建之间的隔离。使用以下命令将每个项目配置为拥有自己的私有缓存caches http://ant.apache.org/ivy/history/latest-milestone/settings/caches.html指示。在你的常春藤设置文件中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)