问题描述
初始状态:
- 一个包含多个项目的 GitLab 实例;
- GitLab 项目的管道依赖于许多二进制文件,包括 Docker 镜像
- 所有这些二进制文件和图像都存在于 Nexus (NXRM3) 的本地 OSS 实例中,以各种格式(docker、maven、raw 等)的托管或组存储库或由此 Nexus 中的存储库代理的远程存储库。
目标状态:
挑战:
- 有什么自动化方法比使用 Nexus REST API“遍历”Nexus 的自定义应用程序/脚本更有效(更少的编码、测试等),在 GitLab 中创建相应的注册表(使用 GitLab API ),从 Nexus 存储库中提取所有工件,然后将它们推送到创建的 GitLab 注册表中?
注意:
- 将 Nexus 存储库类型正确映射到 GitLab 是一个单独的挑战。
- 在 GitLab 中正确复制 Nexus 存储库分类法是一项单独的挑战。
- 将 Nexus 存储库权限正确转移到 GitLab 是一项单独的挑战。
解决方法
我建议创建一个脚本来执行以下操作:
-
列出存储在上述 Nexus 实例的 Docker 存储库中的 Docker 映像的脚本。
-
从上述 Nexus Docker 格式存储库中提取 Docker 映像并将其推送到本地主机上的 Docker 注册表的脚本。
-
从本地 Docker 注册表中提取上述 Docker 映像并将其推送到上述 GitLab 项目 Docker 注册表的脚本。