repo库迁移及批量创建gitlab库

来源:互联网 发布:重庆交通大学网络教育 编辑:程序博客网 时间:2024/06/13 14:01

repo库迁移及批量创建gitlab库

背景:

开发代码放置在外部git服务器,使用repo进行代码更新,由于代码量大、库多、公司网络环境等影响,从服务器获取整体代码速度缓慢,将借助jenkins及gitlab,在本地linux服务器创建repo版本库,将外部服务器代码整体保存到本地局域网服务器,编译开发时从本地服务器取得代码使用。

实施:

1.取得外部服务器的镜像库 (your_url 为外部库地址)

因为整体代码由200多个代码库组成,直接使用repo获取镜像库,追加--mirror参数,将下面标红字体替换为你的repo路径

eg:

mkdir repo_mirror

cd repo_mirror

初始化版本库:

repo init --mirror -u your_url/manifests.git--repo-urlyour_url/repo.git -mmanifest.xml

同步:
repo sync

同步完成后,将在下面将所有repo代码库的镜像库放置到repo_mirror目录下。


2.取得所有代码库文件名,方便批量创建project

repo_mirror目录执行:ls >../projects_list.txt

打开projects_list.txt将projects_list.txt 内所有.git 替换为 \ 

替换前:

pro1.gitpro2.gitpro3.git

替换后:

pro1 \pro2 \pro3 \

3.使用gitlab api批量在指定groups下创建project。(gitlab环境之前已配置ok,此处不详细说明)

浏览器访问http://your_ip/api/v3/projects 查找需要groups的ID ,对应为namespace的id,取得本次创建需要的组id值为2。

ps:具体应该可以使用gitlab的api命令获取,没有仔细研究.....见谅......

 "namespace": {      "id": 2,      "name": "git",      "path": "git",      "owner_id": null,      "created_at": "2016-12-24T08:56:03.582Z",      "updated_at": "2017-09-25T10:30:52.538Z",      "description": "",      "avatar": {        "url": null      },


4.创建gitlab的projects

使用第二步取得的库名及第三步的groups id 创建 project。

private_token从gitlab中获取,

另注意path的值不要使用默认,测试时候发现如果库名中有"."的情况默认会替换为"-",被这个坑了好久。

创建脚本:

projects="pro1 \pro2 \pro3 "for project in $projectsdo    info="name=$project&path=$project&wiki_enabled=no&public_jobs=true&public=true&namespace_id=2&default_branch=master&private_token=your_private_token"    curl -d $info "http://your_ip/api/v3/projects"done
执行结束后到登录到gitlab,确定库创建完成。


5.将镜像库上传到本地gitlab上

创建脚本:

dir_name="$PWD"all=`ls ${dir_name}`for i in $alldoif [ -d $i ]thenecho "[$i]"cd $igit push --mirror git@your_ip:git/$icd ..fidone 
执行脚本,确定版本库push无误。


6.可以使用本地库进行repo代码取得 your_local_url为本地gitlab库地址)

repo init -u your_local_url/manifests.git--repo-urlyour_local_url/repo.git -mmanifest.xml

同步:
repo sync


后记:利用Jenkins自动更新及上传代码库到本地,缩小和外部服务器的代码差异。


参考内容:

gitlab api:https://docs.gitlab.com/ee/api/README.html

原创粉丝点击