验证工件是否已成功发布到联系

时间:2018-06-22 12:02:26

标签: gradle nexus

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

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

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

所以我感兴趣的是,对于任何给定的工件和版本,是否有一种整洁的方法来获取nexus时间戳/最后修改?

侧面说明:以上方法都不能让我信服。我什至无法获得验证工件是否成功发布的最佳方法的详细信息。

有没有更聪明,更强大的方法呢?

  • Nexus:2.12.0-01
  • 等级:4.6
  • Jenkins:2.26

1 个答案:

答案 0 :(得分:0)

我们正在使用人工产物,即与连结存储库管理器等效的技术,并且我们使用REST api获取sha256我们已部署的人工产物。

我确信有类似Nexus的REST API,可让您获取工件的元数据(包括sha的元数据)。

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

这里是对资产api的引用,可能会有所帮助。

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

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