描述
最近新接了一個(gè)需求,有兩個(gè)不同的gitlab倉(cāng)庫(kù),隸屬于不同的部門,我們需要將其他部門的gitlab代碼倉(cāng)庫(kù)實(shí)時(shí)或定時(shí)同步到我們的gitlab代碼倉(cāng)庫(kù)上.
思路
網(wǎng)上調(diào)研了下實(shí)現(xiàn)方案, 大概有兩種
-
方案一
直接設(shè)置鏡像倉(cāng)庫(kù) -
方案二
通過(guò)gitlab webhooks + jenkins + rsync或者git命令同步
實(shí)現(xiàn)方式
1. 設(shè)置鏡像鏡像倉(cāng)庫(kù)
進(jìn)入代碼倉(cāng)庫(kù)之后點(diǎn)擊倉(cāng)庫(kù)
=>鏡像倉(cāng)庫(kù)
=>展開
=>Git倉(cāng)庫(kù)URL
=>填入http://<用戶名>@<倉(cāng)庫(kù)域名.git>格式
=>在密碼框輸入對(duì)應(yīng)用戶的密碼
=>點(diǎn)擊鏡像倉(cāng)庫(kù)
保存設(shè)置
需要注意的是,鏡像倉(cāng)庫(kù)需要該用戶又讀寫分支的權(quán)限,具體權(quán)限可以在
分支保護(hù)
選項(xiàng)下面設(shè)置, 另外gitlab的CE版只能做Push鏡像,而EE則支持Push和Pull鏡像兩種,所以依據(jù)仔細(xì)需求選擇
通過(guò)gitlab webhooks + jenkins + git命令同步
webhooks和Jenkins設(shè)置請(qǐng)參考 Gitlab利用Webhook實(shí)現(xiàn)Push代碼后的jenkins自動(dòng)構(gòu)建
其中的shell腳本可自己替換城git命令方式實(shí)現(xiàn)
Git如何同步多個(gè)遠(yuǎn)程倉(cāng)庫(kù)
新增關(guān)聯(lián)遠(yuǎn)端庫(kù)
# git remote add <name> <git-url>
git remote add gitlab_origin git@gitlab.com:opendvd/dual_push.git
使用使用git remote -v
來(lái)查看關(guān)聯(lián)
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兩個(gè)庫(kù),需要分別push兩次,下面介紹的方法,可以一次性push到兩個(gè)倉(cāng)庫(kù)。
方法:將另一個(gè)遠(yuǎn)程庫(kù)的URL添加到現(xiàn)有的遠(yuǎn)程倉(cāng)庫(kù)的URL
git add dual_push.txt
git commit -m "First commit."
git remote add origin git@github.com:opendvd/dual_push.git
# 關(guān)聯(lián) 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
更多詳情請(qǐng)參考 Git如何同步多個(gè)遠(yuǎn)程倉(cāng)庫(kù)
其他
我在鏡像倉(cāng)庫(kù)同步的時(shí)候還遇到了Url is blocked: Requests to the local network are not allowed
的錯(cuò)
解決方案:
進(jìn)入 admin
=> area
進(jìn)入 settings
=>network
保存設(shè)置后,重新進(jìn)入項(xiàng)目并設(shè)置 webhook 保存即可成功文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-435176.html
參考
1.實(shí)用小帖:利用Gitlab備份代碼倉(cāng)庫(kù),以及鏡像同步
2. Gitlab利用Webhook實(shí)現(xiàn)Push代碼后的jenkins自動(dòng)構(gòu)建
3. Git如何同步多個(gè)遠(yuǎn)程倉(cāng)庫(kù)
4. gitlab - 解決添加webhook提示Url is blocked: Requests to the local network are not allowed的問(wèn)題.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-435176.html
到了這里,關(guān)于gitlab鏡像倉(cāng)庫(kù)設(shè)置及自動(dòng)同步代碼到服務(wù)器實(shí)現(xiàn)方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!