【问题标题】:Hudson delete shared directoryHudson 删除共享目录
【发布时间】:2012-05-12 19:07:05
【问题描述】:

我正在使用 Hudson 和 Ant+ivy 以及许多并行启动的工作。我的问题是我为 Ivy 使用了一个缓存文件夹,该文件夹在每个作业的 ant 任务中都被删除和更新。

当然,有几个构建失败是因为他们无法删除 ivy 文件夹,还有一些构建失败是因为找不到同时被删除的库。

构建失败

C:\dev.hudson\jobs\api\workspace\build\build.xml:100: 无法删除目录 C:\dev\tools\build\ant\extensions\ivy\cache\myapp

编译失败

C:\dev.hudson\jobs\api\workspace\build\build.xml:104: 无法解决依赖关系:解决失败 - 请参阅输出 详情

【问题讨论】:

标签: ant hudson ivy


【解决方案1】:

如果您真的需要每次安德斯回答时都清除缓存,那么您可以这样做。

我希望为所有外部库(或不会发生太大变化的库)保留一个缓存,以及一个始终被清除的基于项目的缓存。

对于很少更改的缓存,锁定策略将很有用,可以处理多线程访问。

lock strategy 应该在这里提供帮助。如果您只使用 ivy 命令来处理缓存,这将确保只有一个进程“在其中处于活动状态”。

您一般可以在ivysettings.xml 中启用它。

<lock-strategies><artifact-lock/></lock-strategies>

或者cache level

【讨论】:

  • 如果每个构建都在清除缓存,那么为每个项目设置一个缓存会更有意义
  • @MarkO'Connor 你是对的。如果确实需要净化,这将是最好的。
  • 如果我在缓存中的库已更改(它们具有相同的名称、版本...)但大小不再相同,会发生什么情况。 Ivy 是否知道并加载新库?
  • @enjoy 您可以将 checkmodified 和 changedPattern 设置为任何resolver
  • @enjoy 我还在解析器上使用了latest-time 策略来更改工件。我认为这对我来说效果最好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
相关资源
最近更新 更多