gitlab镜像仓库设置及自动同步代码到服务器实现方式

描述

最近新接了一个需求,有两个不同的gitlab仓库,隶属于不同的部门,我们需要将其他部门的gitlab代码仓库实时或定时同步到我们的gitlab代码仓库上.

思路

网上调研了下实现方案, 大概有两种

  • 方案一
    直接设置镜像仓库
  • 方案二
    通过gitlab webhooks + jenkins + rsync或者git命令同步

实现方式

1. 设置镜像镜像仓库

进入代码仓库之后点击仓库=>镜像仓库
=>展开=>Git仓库URL=>填入http://<用户名>@<仓库域名.git>格式=>在密码框输入对应用户的密码=>点击镜像仓库保存设置
请添加图片描述

需要注意的是,镜像仓库需要该用户又读写分支的权限,具体权限可以在分支保护选项下面设置, 另外gitlab的CE版只能做Push镜像,而EE则支持Push和Pull镜像两种,所以依据仔细需求选择

通过gitlab webhooks + jenkins + git命令同步

webhooks和Jenkins设置请参考 Gitlab利用Webhook实现Push代码后的jenkins自动构建
其中的shell脚本可自己替换城git命令方式实现

Git如何同步多个远程仓库

新增关联远端库

# git remote add <name> <git-url>
git remote add gitlab_origin git@gitlab.com:opendvd/dual_push.git

使用使用git remote -v来查看关联

gitlab_origin	git@gitlab.com:opendvd/dual_push.git (fetch)
gitlab_origin	git@gitlab.com:opendvd/dual_push.git (push)
origin	git@github.com:opendvd/dual_push.git (fetch)
origin	git@github.com:opendvd/dual_push.git (push)

push

git add dual_push.txt
git commit -m "First commit."
git push -u origin master # git push <repo> <branch>
git push -u gitlab_origin master # git push <repo> <branch>

合并push

上面的方法表明如果要push两个库,需要分别push两次,下面介绍的方法,可以一次性push到两个仓库。
方法:将另一个远程库的URL添加到现有的远程仓库的URL

git add dual_push.txt
git commit -m "First commit."
git remote add origin git@github.com:opendvd/dual_push.git
# 关联 git remote set-url -add <name> <url> 
git remote set-url --add origin git@gitlab.com:opendvd/dual_push.git

## push
git push -u origin master

更多详情请参考 Git如何同步多个远程仓库

其他

我在镜像仓库同步的时候还遇到了Url is blocked: Requests to the local network are not allowed的错

解决方案:

进入 admin=> area
在这里插入图片描述

进入 settings=>network
在这里插入图片描述

保存设置后,重新进入项目并设置 webhook 保存即可成功

参考

1.实用小帖:利用Gitlab备份代码仓库,以及镜像同步
2. Gitlab利用Webhook实现Push代码后的jenkins自动构建
3. Git如何同步多个远程仓库
4. gitlab - 解决添加webhook提示Url is blocked: Requests to the local network are not allowed的问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值