用gitlabCI快速搭建一個GitServer與CI
一般的公司一般都有一個或者多箇中央Git Server,託管著所有專案程式碼;同時當一個專案很大,由許多個工程組成,例如Tizen和Android,那麼一般還有Continuous Integration(CI)在有人push程式碼到工程時編譯整個專案,編譯出錯一般CI會發郵件給提交者和管理者,從而可以及時修正錯誤。
Git Server安裝與使用
Git server很多,列舉一部分:
WINDOWS
- GitStack:免費版只能有兩個賬號
LINUX
- GitLab
- Git-Deamon
- Git使用-bare生成
獲取與安裝
這裡使用gitlab,到這裡下載bitnami gitlab一鍵安裝包
gitlab的使用
直接用IP地址或者網址登陸即可。例如:http://192.168.1.120,要求使用者名稱和密碼時使用安裝時輸入的使用者名稱和密碼。
檢查狀態:
$ sudo /home/git/gitlab-shell/bin/check Check GitLab API access: OK Check directories and files: /opt/gitlab-6.3.0-0/apps/gitlab/repositories: OK /home/git/.ssh/authorized_keys: OK /opt/gitlab-6.3.0-0/redis/bin/redis-cli: OK
從上面可以看到repository的位置/opt/gitlab-6.3.0-0/apps/gitlab/repositories。既然知道了repository在哪,那麼我們就可以匯入repo了。
Repository的匯入
什麼時候需要匯入REPOSITORY?
以前要想sync下Android的整個程式碼,需要極長的時間,現在要想repo sync下Tizen的程式碼,在國內一般會比較困難,經常出現unexpected hang之類的錯誤,就算寫個sync的指令碼不斷的去sync結果也很可能是好幾天都無法sync成功。除此之外,我們很可能需要更改程式碼,而這個程式碼很可能並不願意push到Tizen Gerrit去,這個時候,很可能就需要自己搭建一個本地的repository供開發人員使用。
如何匯入一個遠端倉庫
第一步:在本地生成一個BARE倉庫
git clone --bare PathofGitReop.git XXXX.git
第二步:拷貝BARE REPOSITORY到GITLAB的REPOSITORIES中
cp XXX.git /opt/gitlab-6.3.0-0/apps/gitlab/repositories/
第三步:使用
bundle exec rake gitlab:import:repos RAILS_ENV=production
另外還可以在新建project
將repo切換到其他地方
讓gitlab同步其他repository 參考stackoverflow上的這個問題回答
#如何匯入一個本地的CLONE程式碼
有一個.git的git clone目錄,就是一個repository,因此可以從這個repository clone程式碼。
git clone [email protected]://IP Address/Path to the Git clone dir git clone [email protected]:hexiongjun/uboot-imx.git git remote add origin [email protected]:hexiongjun/test.git git remote rm origin
如何匯入一個本地的用git clone --mirror產生的bare倉庫
git remote rm origin git remote add origin [email protected]:user/XXX.git git push -u origin master git push -u origin otherbranch
當然也可以完全不用這麼麻煩,因為.git目錄就是bare repository。所以也可以直接將這個copy過去。
注意就現在這個版本(6.3.0),gitlab還不支援匯入git協議的reop。
持續整合(Continues Integration)
持續整合(△2),是一個在有人提交檔案後對整個project不斷編譯構建的系統。Jenkins是比較有名的持續整合系統,Gitlab也有一個CI。在安裝的時候就預設會選擇上。 在安裝完成後可以進入到:http://IP or Hostname/githubci即可進入整合系統的管理web。
新增許可權
gitlab ci安裝好後會建立一個叫做gitlab_ci的使用者,ci要build gitlab中的專案第一不就是從gitlab中取一個專案,gitlab_ci使用者需要有獲取project的許可權。將/home/gitlab_ci/.ssh/id_rsa.pub中的內容複製貼上到需要被ci 新增的專案中。
編譯配置
在編譯指令碼中如果需要配置環境變數,那麼就需要注意了,如下圖,因為build scripts中的每一行都是在一個單獨的sh環境中執行,因此,需要將多條命令用&&整合成一條。另外在側邊可以輸入branch分支。
另外還有一點,在現在這個gitlabCI版本中,scripts中是不允許空行的。否則會出現Diretory not found的錯誤提示,參考這裡。
點選此頁面可以跳到對應的CI中。
如果編譯出錯,那麼還可以retry,先跳轉到Builds頁面:
然後再右側有一個Retry按鈕:
對應的編譯log就在此頁面中。而在gitlab對應的專案網頁中,頁面右側將有一個build success的圖片:
新新增project到CI
在新新增任務到CI中後,需要為其分配runner來編譯,點選下面圖中Token,切換到這個runner。
然後enable剛才新新增的專案。然後再對這個runner assign to all 即可。
參考:
△2:CI
△4: bitnami還提供其他許多軟體的一鍵安裝包,例如LAMP RedMine等等。
轉載請註明出處。作者:TonyHo hexiongjun.com