安裝Gitlab & 配置Jenkins CI & 解決換源部署的坑

這兩周負責將公司倉庫從Github換到Gitlab

安裝Gitlab

推薦使用官方推薦的Omnibus package安裝

最先在自己的服務器上裝,總是會出現502問題,找了各種資料最后感覺這篇文章講得比較好

修改gitlab使用現有nginx服務及502問題解決

原因可能是系統內存不足,無法分配足夠內存,導致啟動失敗,這種情況只能升級服務器配置來解決。

所以在公司的AWS上開了臺4g內存的裝上就可以了。。。。

附:Gitlab命令

配置

  1. 關閉服務器上所有無關的端口

  2. 起始用戶名:root, 密碼:5iveL!fe

  3. 因為是公司自己用,所以關閉注冊,全部采取邀請注冊機制

  4. 創建項目的時候切記關閉Gitlab CI!(Gitlab新版本默認開啟CI,如果沒配置又沒關閉會出現一個關不掉的表示CI正在運行的圖標,應該是Gitlab的小bug)

    Edit Project --> Repository --> Build --> Disabled

配置Jenkins

  1. Jenkins安裝Gitlab插件: Gitlab Hook Plugin & GitLab Plugin
  2. 新建一個job
  3. 源碼管理部分選Git, Repository URL填入 git@gitlabXXXX.git
  4. 添加Credential,把Jenkins所在服務器的SSH填入到Gitlab用戶中
  5. 選擇分支 這一步有大坑,下面會講到
  6. 源碼庫瀏覽器選擇gitlab,填入url(http://gitlabxxxxxx)和版本
  7. 構建觸發器里面勾選Build when a change is pushed to GitLab. GitLab CI Service URL: XXXXX, 到Gitlab項目中Webhook里面添加這個URL
  8. 添加自己項目需要的構建腳本

Branch Filter 大坑

上面第五步分支過濾,以前用Github在構建的時候在Git --> Branches to build --> Branch Specifier 里面填需要篩的分支即可比如 */staging

但是Gitlab由于用了Gitlab Plugin, 它有自己的一套過濾系統, 并且不走Jenkins自帶的。

在Build when a change is pushed to GitLab. GitLab CI Service URL:XXXX (這個就是插件提供的)里面點開“高級”,可以看到Allowed branche的選項,選擇Filter branches by regex 填入自己需要的分支,比如(.*master)

注意,這個地方的正則可能和大家平常寫的有一點點區別,一定要看下幫助。

對于CI的流程自己的一些理解

  1. push 代碼, Gitlab觸發hook, 訪問Jenkins提供的api
  2. Jenkins Branch Filter 系統判斷自己需要處理的分支是否有改動,如果有開始構建
  3. 運行構建腳本

搬遷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

遠端

git branch |grep 'xxx' |xargs git push origin --delete 

參考資料:http://www.lxweimin.com/p/3602f666799a

如何看分支數

git branch | wc -l

文件行數,從0開始計數:wc -l filename

wc -l a.txt

遠端:

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源

不過即使是這樣,最后發現部署時還是從github拿的代碼

google了很久后找到了解決方案,需要刪除repo這個文件夾(這個是Capistrano自己建的存放遠端相關信息的文件夾)

參考資料: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源

在部署和被部署的服務器上沒有repo文件夾的地方,可能需要手動更改remote源,方法見上面的"更換remote源"

手動指定分支

上面更改了遠端remote源的地方可能需要自己指定分支

git branch --set-upstream-to=origin/master master
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容