【问题标题】:Reducing redundant SNAPSHOTs减少冗余 SNAPSHOT
【发布时间】:2014-08-28 03:58:42
【问题描述】:

我们的项目目前每天有 500 多个 SNAPSHOT jar 可供下载。这正在成为开发的负担,尤其是当 Artifactory 远程就位时,因此连接并不理想。

我想知道减少部署到 Artifactory 的冗余 SNAPSHOT jar 的最佳方法。我们有一个大型的多模块项目,正在部署近 200 个新的 SNAPSHOT jar,尽管实际上只有 1 个模块包含更改。

我发现了一个类似的问题raised in the forum,但那里也没有明确的答案。由于this issue,增量构建对我们来说不可行。

欢迎提出任何建议!

【问题讨论】:

    标签: maven jenkins artifactory


    【解决方案1】:

    Artifactory wiki 中的“Managing Disk Space Usage”页面描述了清理旧快照的各种方法:

    1. 限制快照数量 - 您可以指定可以存储的最大快照数量。
      要指定可以存储的最大快照数,请在“编辑存储库”对话框中选择“基本设置”选项卡。您首先需要选中 Handle Snapshots 复选框,然后您可以设置 Max Unique Snapshots 字段。该值默认为零,表示保存所有快照。
    2. 为自定义清理逻辑使用用户插件 - 您可以编写脚本来实现几乎任何自定义清理逻辑。这为您提供了一套广泛而灵活的定制功能。在Github 上查看此类脚本的示例

    【讨论】:

    • CMIIW 但是 Artifactory 中的“唯一”意味着每次我部署完全相同的 SNAPSHOT jar 时,它们都会被认为是唯一的,对吧?因此,它不能解决我的问题,即重复部署和重新下载相同的二进制文件。
    • 唯一快照意味着每个新部署的快照都将获得一个唯一版本(基于时间戳)。是否与上一个相同并不重要。通过设置最大唯一快照,您可以限制将保留的快照数量。此外,如果两个工件是二进制相同的(相同的校验和),Artifactory 将只保留二进制一次并有多个指向它的指针(基于校验和的存储)。这样做是为了节省磁盘空间。
    • 不幸的是,我们要解决的不是磁盘空间问题。 Maven 将通过检查时间戳而不是校验和来确定 SNAPSHOT 是否是新的。下载将再次发生,这是我们正在尝试解决的问题。
    【解决方案2】:

    如果只有一个模块发生变化,那你为什么要重建整个项目?或者换句话说,您经常更改的模块似乎与项目的其他部分具有不同的生命周期,因此您应该考虑将其移至具有自己发布周期的单独项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 2017-12-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      相关资源
      最近更新 更多