将Nexus仓库复制到GitLab镜像仓库。

3

初始状态:

  • 一个有许多项目的GitLab实例;
  • GitLab项目具有依赖于许多二进制文件(包括Docker镜像)的流水线;
  • 所有这些二进制文件和镜像都存在于本地OSS Nexus (NXRM3)实例的托管或组仓库中,有各种格式(docker、maven、原始等),或者是由Nexus中的仓库代理的远程仓库。

目标状态:

  • 将GitLab和Nexus的内容以一种方式转移到GitLab中,使得流水线在进行简单修改,如将URL从Nexus更改为GitLab二进制注册表后,可以运行。

挑战:

  • 与使用Nexus REST API“遍历”Nexus、使用GitLab API创建相应的注册表、将所有工件从Nexus repo拉取并推送到已创建的GitLab注册表的自定义应用程序/脚本相比,哪种自动化方法更有效(代码编写、测试等方面)?

注意:

  • 正确映射Nexus repo类型到GitLab是一个单独的挑战。
  • 正确在GitLab中重现Nexus repo分类法是一个单独的挑战。
  • 正确将Nexus repo权限传输到GitLab是一个单独的挑战。

我们内部决定只迁移必要的构件,比如进行一次清理。因此,我们逐个迁移每个项目,并编写了一个 GitLab CI 流水线来从 Nexus 获取并上传到 GitLab。这样,我们也可以稍微清理一下我们的构件存储。 - Simon Schrottner
@SimonSchrottner你有相关的GitLab-CI示例吗?我想针对Docker镜像和Maven构件来完成,但我不太清楚应该如何处理。我认为我会使用脚本(可能是Python),但我正在寻找更好的替代方案。 - Dorian
1个回答

1
我建议创建一个脚本来完成以下操作:
  1. 列出存储在上述Nexus实例的Docker仓库中的Docker镜像的脚本。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接