【问题标题】:validate if artifact got published to nexus successfully验证工件是否成功发布到 nexus
【发布时间】:2018-12-01 21:45:19
【问题描述】:

我的要求是将快照工件发布到 nexus 快照存储库并验证工件是否成功发布。 我正在考虑的方法是,

  1. 验证已发布工件的时间戳(其余响应中的<last-modified> 字段)是否晚于构建开始时间。
  2. 比较最新的工件是否具有与我发布工件后不同的 SHA1 哈希值。
  3. 从 maven-metadata.xml 中获取时间戳并发出休息请求以使用时间戳进行工件并查看它是否存在。

关于方法#1,我看不到任何返回我已发布工件的时间戳的 rest-api,所以我试图获取快照版本的工件的整个响应,我正在解析XML 并查找最新发布的工件及其日期。只是为了验证它的真实性。对于这种方法,当我们在这里考虑快照时,返回的响应将包含特定版本的所有信息,并且根据开发工作可能会变得很大。

所以我很感兴趣,如果有一种简洁的方法可以为任何给定的工件和版本获取 nexus 时间戳/最后修改?

旁注:以上方法都没有让我信服。我什至无法获得有关验证工件是否成功发布的最佳方法的详细信息。

有没有更聪明、更健壮的方法?

  • Nexus:2.12.0-01
  • 等级:4.6
  • 詹金斯:2.26

【问题讨论】:

    标签: gradle nexus


    【解决方案1】:

    我们正在使用 artifactory,这是一种与 nexus 存储库管理器等效的技术,并且我们使用 REST api 来获取我们已部署的 sha256 的工件。

    我确信有一个与 Nexus 类似的REST api,使您能够获取工件的元数据(包括 sha)。

    由于您正在处理快照构建,因此获取sha256 而不仅仅是时间戳很重要。原因是,如果其他人同时部署相同的工件,您不知道部署的是哪一个。

    这是对可能有用的资产 api 的参考。

    https://help.sonatype.com/repomanager3/rest-and-integration-api/assets-api

    作为最后的评论,我建议切换到非快照构建。如果您将快照构建部署到存储库,任何人都可以随时覆盖这些构建,如果您使用快照构建,您将面临一系列挑战。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 2015-05-16
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 2012-06-17
      相关资源
      最近更新 更多