這兩周負(fù)責(zé)將公司倉庫從Github換到Gitlab
安裝Gitlab
推薦使用官方推薦的Omnibus package安裝
最先在自己的服務(wù)器上裝品抽,總是會出現(xiàn)502問題距潘,找了各種資料最后感覺這篇文章講得比較好
修改gitlab使用現(xiàn)有nginx服務(wù)及502問題解決
原因可能是系統(tǒng)內(nèi)存不足,無法分配足夠內(nèi)存仑撞,導(dǎo)致啟動失敗赤兴,這種情況只能升級服務(wù)器配置來解決妖滔。
所以在公司的AWS上開了臺4g內(nèi)存的裝上就可以了。桶良。座舍。。
附:Gitlab命令
配置
關(guān)閉服務(wù)器上所有無關(guān)的端口
起始用戶名:root, 密碼:5iveL!fe
因為是公司自己用陨帆,所以關(guān)閉注冊曲秉,全部采取邀請注冊機制
-
創(chuàng)建項目的時候切記關(guān)閉Gitlab CI!(Gitlab新版本默認(rèn)開啟CI疲牵,如果沒配置又沒關(guān)閉會出現(xiàn)一個關(guān)不掉的表示CI正在運行的圖標(biāo)承二,應(yīng)該是Gitlab的小bug)
Edit Project --> Repository --> Build --> Disabled
配置Jenkins
- Jenkins安裝Gitlab插件: Gitlab Hook Plugin & GitLab Plugin
- 新建一個job
- 源碼管理部分選Git, Repository URL填入 git@gitlabXXXX.git
- 添加Credential,把Jenkins所在服務(wù)器的SSH填入到Gitlab用戶中
- 選擇分支 這一步有大坑纲爸,下面會講到
- 源碼庫瀏覽器選擇gitlab亥鸠,填入url(http://gitlabxxxxxx)和版本
- 構(gòu)建觸發(fā)器里面勾選Build when a change is pushed to GitLab. GitLab CI Service URL: XXXXX, 到Gitlab項目中Webhook里面添加這個URL
- 添加自己項目需要的構(gòu)建腳本
Branch Filter 大坑
上面第五步分支過濾,以前用Github在構(gòu)建的時候在Git --> Branches to build --> Branch Specifier 里面填需要篩的分支即可比如 */staging
但是Gitlab由于用了Gitlab Plugin识啦, 它有自己的一套過濾系統(tǒng)负蚊, 并且不走Jenkins自帶的。
在Build when a change is pushed to GitLab. GitLab CI Service URL:XXXX (這個就是插件提供的)里面點開“高級”颓哮,可以看到Allowed branche的選項家妆,選擇Filter branches by regex 填入自己需要的分支,比如(.*master)
注意题翻,這個地方的正則可能和大家平常寫的有一點點區(qū)別揩徊,一定要看下幫助。
對于CI的流程自己的一些理解
- push 代碼嵌赠, Gitlab觸發(fā)hook塑荒, 訪問Jenkins提供的api
- Jenkins Branch Filter 系統(tǒng)判斷自己需要處理的分支是否有改動,如果有開始構(gòu)建
- 運行構(gòu)建腳本
搬遷Github倉庫至Gitlab
Git 拉下所有分支
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
參考資料:http://stackoverflow.com/questions/10312521/how-to-fetch-all-git-branches
更換remote源
git remote -v
git remote rm origin
git remote add origin git@XXXXXX
如何批量刪除分支
本地
git branch |grep 'xxx' |xargs git branch -D
遠(yuǎn)端
git branch |grep 'xxx' |xargs git push origin --delete
參考資料:http://www.reibang.com/p/3602f666799a
如何看分支數(shù)
git branch | wc -l
文件行數(shù)姜挺,從0開始計數(shù):
wc -l
filenamewc -l a.txt
遠(yuǎn)端:
git ls-remote
git ls-remote | wc -l
上傳
git push origin --all
/ git push -u origin master
之后 git push —all
/git push --all origin
Capistrano部署的坑
修改Capistrano里面部署的配置文件deploy.rb齿税,將url從github改成gitlab源
不過即使是這樣,最后發(fā)現(xiàn)部署時還是從github拿的代碼
google了很久后找到了解決方案炊豪,需要刪除repo這個文件夾(這個是Capistrano自己建的存放遠(yuǎn)端相關(guān)信息的文件夾)
參考資料:https://github.com/capistrano/capistrano/issues/1227
I remove directory repo, and it works with new repo
mv repo repo.bak
rm -rf repo
手動更改remote源
在部署和被部署的服務(wù)器上沒有repo文件夾的地方凌箕,可能需要手動更改remote源,方法見上面的"更換remote源"
手動指定分支
上面更改了遠(yuǎn)端remote源的地方可能需要自己指定分支
git branch --set-upstream-to=origin/master master