当前位置: > 其它学习 > Gitlab >

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

时间:2021-11-23 17:18来源:未知 作者:IT
描述
最近新接了一个需求,有两个不同的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的问题.
 

(责任编辑:IT)
------分隔线----------------------------