Sonatype Nexus:同步 REST 调用
Sonatype Nexus: synchronous REST calls
我使用 Nexus 作为我的项目的存储库,我使用 Jenkins 作为我的 CI 编排器。
在我的 Jenkins 作业结束时,我调用 Nexus REST API 来重建 Maven 元数据,以便可以更新有关每个组件的最新版本的信息。当执行 REST 调用时,它会立即 returns,但更新任务实际上在 Nexus 中排队并最终被执行。
因为我同时有多个作业 运行,当其中一个组件试图从 Nexus 中拉取依赖项时,有时会 运行 构建成一种竞争条件虽然 Maven 元数据尚未完成刷新 - 因此,旧版本从 Nexus 中提取,即使新版本已经存在并且元数据即将刷新。
防止这种情况的一个好方法是使此调用同步,即阻止构建,直到真正重建 Maven 元数据。
当然,我可以通过循环轮询 Nexus 以获取组件的最新版本,直到更新为止,以编程方式执行此操作。但是,我想知道是否有办法使用 Nexus API 来做到这一点。想法?
经过大量研究,我找不到任何关于此的文档,也没有在这里得到回复。我通过以编程方式检查 Maven 元数据直到它更新来解决了这个问题。
我使用 Nexus 作为我的项目的存储库,我使用 Jenkins 作为我的 CI 编排器。
在我的 Jenkins 作业结束时,我调用 Nexus REST API 来重建 Maven 元数据,以便可以更新有关每个组件的最新版本的信息。当执行 REST 调用时,它会立即 returns,但更新任务实际上在 Nexus 中排队并最终被执行。
因为我同时有多个作业 运行,当其中一个组件试图从 Nexus 中拉取依赖项时,有时会 运行 构建成一种竞争条件虽然 Maven 元数据尚未完成刷新 - 因此,旧版本从 Nexus 中提取,即使新版本已经存在并且元数据即将刷新。
防止这种情况的一个好方法是使此调用同步,即阻止构建,直到真正重建 Maven 元数据。
当然,我可以通过循环轮询 Nexus 以获取组件的最新版本,直到更新为止,以编程方式执行此操作。但是,我想知道是否有办法使用 Nexus API 来做到这一点。想法?
经过大量研究,我找不到任何关于此的文档,也没有在这里得到回复。我通过以编程方式检查 Maven 元数据直到它更新来解决了这个问题。