乐趣区

关于gitlab:自建Gitlab迁移工具使用指南

自建 Gitlab 迁徙工具指南,迁徙工具对自建 Gitlab 服务的数据搬站提供了反对,能够不便地将 Gitlab 的 Git 代码数据、用户权限关系和已开启的合并申请数据进行批量迁徙,大幅升高企业迁徙老本。

阐明:
迁徙工具包于 2022 年 04 月 13 日 进行更新,新增自建 Gitlab 人员权限关系和已开启的合并申请迁徙能力,倡议该日期前下载工具的用户更新最新版本应用。

留神 倡议导入库地址应用 HTTP 协定,后续将基于 HTTP 协定反对仓库同步能力。

工具应用办法

简略三步,实现代码库批量迁徙:

步骤一. 下载迁徙工具;

步骤二. 通过命令主动生成阿里云 RAM 子账号,作为迁徙用户映射关系的配置文件;

步骤三. 通过命令主动生成冀望导入的代码库列表,作为迁徙库范畴的配置文件;

步骤四. 执行迁徙命令,工具将根据步骤二、三生成的配置文件将自建 Gitlab 数据迁徙至 Codeup 指定企业;

一、工具筹备

下载迁徙工具,其原理是依据你在自建的 Gitlab 服务里的权限,主动生成相干配置文件,并能够按需调整配置文件内容后,再根据配置文件规定将 Gitlab 数据迁徙至 Codeup 企业中。

下载工具

macOS ARM 64 位 下载地址

macOS 64 位 下载地址

Linux 64 位 下载地址

Windows 64 位 下载地址

下载地址详见:https://help.aliyun.com/document_detail/424587.html

装置工具

Windows 环境能够跳过装置,间接应用,但须要保障在命令行执行的目录下有已下载的迁徙工具。

Linux 和 macOS,须要将下载失去的文件放在 /usr/local/bin/ 目录下:

mv codeup /usr/local/bin/

测试工具

在命令行中执行,执行胜利会显示工具的帮忙信息:

codeup -h

在 macOS 可能会提醒 macOS 无奈关上工具,因为无奈验证开发者,请通过“零碎偏好设置”-“安全性与隐衷”-“通用”页面,抉择“依然容许”,来受权 macOS 应用工具

二、迁徙打算和筹备工作

当初,你有一个自建的 Gitlab 服务,下面有若干个用户,以及若干代码库和曾经设置好的代码库成员权限、爱护分支规定,正在进行中的合并申请等数据。

本工具能够帮忙你进行如下数据的迁徙:

  • 代码库 Git 数据
  • 代码库的根本设置:仅包含库的形容信息、库的默认分支设置
  • 代码库的爱护分支规定:仅包含分支名、容许推送角色、容许合并角色
  • 代码库的成员信息:依据提供的用户映射配置文件,将 Gitlab 用户映射到 Codeup 的库用户,并将用户增加到 Codeup 的对应代码库成员中,转变为 Codeup 的库角色时有如下映射准则:

  • 代码库中正在进行中的合并申请(已开启的合并申请):会在 Codeup 中以迁徙操作人的身份创立同名的合并申请,并将能辨认到映射关系的评审者进行迁徙。不会保留已有的评论、动静和创建人等信息。

其中,代码库成员数据和合并申请数据的迁徙是可选的,你能够抉择迁徙或者不迁徙。

假如你曾经下载安装好工具,并测试工具失常可运行,已明确迁徙的内容:要迁徙上述反对的所有数据。咱们举荐你遵循上面的迁徙打算:

  1. 在正式迁徙生产库前,倡议应用非正式库进行试迁徙,保障配置正确后正式迁徙;
  2. 在迁徙操作时倡议管制自建 Gitlab 的库变更和写入行为,一旦仓库迁徙胜利后,反复迁徙不会刷新变更的代码数据,即迁徙后 Gitlab 的新增内容不会更新至 Codeup;

阐明 筹备工作:
援用

  1. 一个阿里云的主账号(同时须要作为云效指标企业的拥有者),以及获取主账号的 AK、SK , 假如是 ‘$aliyunAk’,‘$aliyunSk’
  2. 指标冀望迁徙到的 Codeup 企业 ID,假如是 ‘$orgId’(可在云效企业治理后盾查看)
  3. 阿里云主账号在 Codeup 的集体拜访令牌,要勾选授予权限 write:repo,假如令牌是’$codeupToken‘
  4. 你的 Gitlab 服务地址,假如是 http://mygitlab.com
  5. 你的 Gitlab 管理员账号的 AccessToken(须要授予 read_user, read_api , read_repository 权限),假如为 ‘$gitlabToken’
    援用
    以上假如值在上面的工具执行中会用到,请在理论迁徙过程中应用你实在的配置信息替换。

三、迁徙过程

3.1 迁徙 Gitlab 用户权限【可选】

Gitlab 和 Codeup 用户关系存在以下两种状况:

  1. Gitlab 用户曾经在 Codeup 上手动本人创立了一个用户(可能同名或不同名)
  2. Gitlab 用户在 Codeup 上没有对应的用户

首先要明确的是 Gitlab 的用户数据和 Codeup 上的用户数据是独立不相干的,对于 Codeup 来说须要你提供映射关系表。

即便你晓得 Codeup 上有个叫张三的用户,在 Gitlab 有一个 zhangsan 的用户,两个用户其实是同一个人,那么也是须要通知工具,两个账号的关联关系。这样就须要一个用户的映射配置文件,迁徙工具会依据这个用户映射文件,将 Gitlab 用户权限关系数据迁徙到 Codeup 对应代码库内。

接下来的操作,将会帮忙你批量实现 Gitlab 用户在 Codeup 上同名用户的创立和关联。

# 假如曾经 CD 到工具所在的目录下,执行上面的命令

codeup repo generateUserMap --host=http://mygitlab.com --access_token=$gitlabToken --access_key=$aliyunAk --secret_key=$aliyunSk

...
#命令执行胜利后,在你指定 AK\SK 的阿里云主账号下,会批量创立出与 Gitlab 用户同名的阿里云 Ram 子账号,并会在当前目录生成一个 user-map.csv 的文件

关上 user-map.csv,其内容的格局是每一行都是 [Gitlab 的用户名],[Codeup 用户的阿里云 ID],形如:

zhangsan,11232342143245234
lisi,1231312312311

你能够手动编辑这个文件,减少或删除用户映射的配置(例如局部用户不心愿应用主动生成的账号,能够手动将映射关系改为指定的阿里云账号)。

阐明 阿里云账号 ID 获取形式:在 https://www.aliyun.com 主页右上角点击头像 - 账号 ID

此时,你能够发现阿里云主账号下对应 Gitlab 中的用户名顺次创立出了 RAM 子账号,当初,须要在云效指标企业中,同步这些子账号成员。

应用以后阿里云主账号,进入云效企业成员治理,点击右上角增加成员,抉择邀请企业成员:

全选或勾选冀望同步的 RAM 账号,增加至云效企业中:

至此,你曾经实现了 Gitlab 用户到 Codeup 用户的创立和映射关系,失去了一个 user-map.csv 的文件,并将新创建的 RAM 用户导入至云效的指标企业中了。

3.2 定义迁徙的代码库范畴

你须要告知迁徙工具要迁徙的代码库列表范畴,这也须要一个配置文件。

能够通过上面操作,主动剖析出在 Gitlab 中的所有代码库并生成这个迁徙库范畴的配置文件。

codeup repo generate --platform=gitlab --access_token=$gitlabToken --host=http://mygitlab.com

...
# 命令执行实现后会在当前目录下生成一个 repo_list_config.csv 的配置文件

关上 repo_list_config.csv,其内容格局是每一行都是[库克隆地址],[Codeup 代码库门路],[Codeup 代码库可见性],形如

# 库克隆地址,Codeup 代码库门路,Codeup 代码库可见性
http://mygitlab.com/xxxxx/stable.git,xxxxx/stable,10

你能够手动编辑这个文件,减少或删除冀望迁徙的代码库范畴。

至此,你曾经明确了迁徙的代码库范畴,失去了一个 repo_list_config.csv 的文件。

3.3 基于以上配置文件批量迁徙 Gitlab 数据到 Codeup

# 通过 ls 查看以后的目录的文件(windons 的话是 dir 命令), 确认下有以上两个配置文件
ls

repo_list_config.csv
user-map.csv

# 执行上面命令开始迁徙
codeup repo importGitlab --repo_list_path=repo_list_config.csv --organization=$orgId --access_key=$aliyunAk --secret_key=$aliyunSk --personal_access_token=$codeupToken --import_member=true --user_map_path=user-map.csv --import_merge_request=true --push_protocol=http


...

# 迁徙过程中会展现迁徙的细节,如果有问题会显示报错信息

工具执行完后,如果一切正常,你便能够在 Codeup 上查看迁徙过去的代码库、库设置、用户成员和合并申请等信息,以确认迁徙无误。

阐明
如果不心愿迁徙人员权限、合并申请数据,能够将以上命令中的对应字段置为 false:
援用
–import_member=false
援用
–import_merge_request=false

祝贺你,至此曾经实现了自建 Gitlab 指定数据的迁徙工作,点击下方链接在云效 Codeup 上立刻开始托管体验吧

https://www.aliyun.com/product/yunxiao/codeup?channel=yy_yccb_yc

退出移动版