将 Nexus 存储库复制到 GitLab 注册表

问题描述

初始状态:

  • 一个包含多个项目的 GitLab 实例;
  • GitLab 项目的管道依赖于许多二进制文件包括 Docker 镜像
  • 所有这些二进制文件和图像都存在于 Nexus (NXRM3) 的本地 OSS 实例中,以各种格式(docker、maven、raw 等)的托管或组存储库或由此 Nexus 中的存储库代理的远程存储库。

目标状态:

  • GitLab 和 Nexus 的内容以某种方式传输到 GitLab 中,允许管道在微不足道的修改后运行,例如将 URL 从 Nexus 更改为 GitLab 二进制注册表。

挑战:

  • 有什么自动方法比使用 Nexus REST API“遍历”Nexus 的自定义应用程序/脚本更有效(更少的编码、测试等),在 GitLab 中创建相应的注册表(使用 GitLab API ),从 Nexus 存储库中提取所有工件,然后将它们推送到创建的 GitLab 注册表中?

注意:

  • 将 Nexus 存储库类型正确映射到 GitLab 是一个单独的挑战。
  • 在 GitLab 中正确复制 Nexus 存储库分类法是一项单独的挑战。
  • 将 Nexus 存储库权限正确转移到 GitLab 是一项单独的挑战。

解决方法

我建议创建一个脚本来执行以下操作:

  1. 列出存储在上述 Nexus 实例的 Docker 存储库中的 Docker 映像的脚本。

  2. 从上述 Nexus Docker 格式存储库中提取 Docker 映像并将其推送到本地主机上的 Docker 注册表的脚本。

  3. 从本地 Docker 注册表中提取上述 Docker 映像并将其推送到上述 GitLab 项目 Docker 注册表的脚本。