把Git上Web
Gitblit是建置在Java之上,所以要先安裝JVM (7+),Java環境裝好後,再來是建置WebC Container,最方便的是Tomcat,把下載War檔(1.7.1版)且接丟到 webapp/ 下(丟進去前可將檔名改為git.war),再把Tomcat上起來,下載的War檔就會自動在 webapp/ 下解開。
Gitblit的檔案結構如下:
左圖後的 users.conf就是使用者的設定檔,在Web界面設定皆儲存於此檔案
project.conf 與 git/project.mkd 兩個檔是主要檔案庫的標題與說明,自行修改中文如下:
|
project.conf
[project "main"]
title = 主要版本庫
description = 文件庫的主群組
|
git/project.mkd
本專案乃是包含以*git.repositoriesFolder*為根目錄下所有建立的版本庫
現在展示的訊息儲存在 *git.repositoriesFolder*/**project.mkd**.
#### 其它專案
在每一個專案或是版本庫群組都可以有其專屬的訊息,只要在專案目錄下建立 **project.mkd**.
例如:
<pre>
<i>git.repositoriesFolder</i>/專案a/<b>project.mkd</b>
<i>git.repositoriesFolder</i>/專案b/<b>project.mkd</b>
</pre>
|
然後顯示如下:
Gitblit主要的設定在gitblit.properties檔案,因為其內容只有一行include = defaults.properties,所以真正的設定在defaults.properties,開始說明幾處設定:
#這裡就是Git檔案庫的存放所在地
git.repositoriesFolder = ${baseFolder}/git
#這裡就是Gitblit的用戶設定檔案
realm.userService = ${baseFolder}/users.conf
#這裡設定Gitblit的URL,若不設就會出現像http://localhost/git或是http://192.168.10.xxx/git
web.canonicalUrl=http://git.mydomain.com/git
#這裡必須為true,除非只用ssh://或git://方式存取Gitblit
git.enableGitServlet = true
#是否顯示串連(federation)的鍵值,後面再解釋,如果有多個Gitblit要串連,請設為true
web.showFederationRegistrations = true
#若為空值則不會有串連功能,其值是用來產生Gitblit的識別鍵值之用
federation.passphrase = 非空字串
|
好吧,啟動Tomcat,開啟瀏覽器,設定使用者,並建立新的版本庫,
Let’s git it.
HOOK
Gitblit允許在特定的時間點,執行一些額外的動作,例如當使用者Submit專案後,通知Jenkins進行檔案抓取並進行建置。作法很簡單,只要設定Gitblit在接收專案(使用者Submit)後,執行一段額外的程式(在這個例子,我選擇了jenkins)。
Gitblit的Hook程式放在${baseFolder}/groovy/ 目錄下,開啟jenkins.groovy修改如下:
def jenkinsUrl = gitblit.getString('groovy.jenkinsServer', 'http://jenkins.yourdoman.com.tw')
def triggerUrl = jenkinsUrl + "/buildWithParameters?token=${repository.name}"
|
程式片段很簡單:就是使用者Sumit後,觸發知Jenkins Server的某個網址(在這例子中${repository.name}會被替代成sd4j.git),讓知Jenkins知道該去Pull 某些程式來進行建置,上面的修改完後存檔後重啟Web Server
上面的Repository URL設為取得程式碼的網址,Credential則是設定登錄Gitblit主機的帳/密,下面勾選遠端觸發建置,也就是之前Hook設定:使用者Submit後通知Jenkins主機,這裡通知的網址可以有兩種型式,我選擇第2種,所以當我的專案Submit到Gitblit主機後,Jenkins主機便按的Repository URL網址把程式碼抓下來建置專案。
串連(Federation)
其實說穿了很簡單,就是把一台Gitblit主機的檔案庫同步到另一台Gitblit主機。我們首要是在設定檔中加入一些相關設定,從官方文件中,它把要被備分的主機稱為Origin,把備分的主機稱為Pulling,首先我們登錄Origin主機(登錄者要有admin的權限),然後選取串連。
然後可以看到有3種不同的備分方式:
第一種方式是把整機,包含所有版本庫、用戶與機器設定,一股腦全部備分到另一台機器,第二種方式則只是備分所有版本庫與用戶資料,第三種則只有備版本庫而以。當決定好備分方式後,我們按下提案(proposal),告知另一台主機(Pulling)我們的要求。
提案發出後再登錄到Pulling主機(登錄者一樣要有Admin的權限)後,開啟串連後會看到下面
|
點進去後會看到
把上述紅色的通知文字貼到Pulling主機的設定檔(defaults.properties), 當然貼上去前要做點小修改
#把originkentyehcomtw改成originServer
federation.originServer.url = http://origin.kentyeh.com.tw/git
federation.originServer.token = 0986286c18bd0ea741fe330389014850b04555ca
#10分鐘備分一次,可視需要修改
federation.originServer.frequency = 10 mins
#表示Origin的版本庫會備分到目錄${baseFolder}/git/originServer下,會用目錄區分是因為
#一台#Pulling備分主機可備分來自多台不同的Origin主機的版本庫,若是一對一的備分,
#直接把下面的oringServe移除,則直接備在${baseFolder}/git/目錄下
federation.originServer.folder = originServer
federation.originServer.bare = true
federation.originServer.mirror = true
federation.originServer.sendStatus = true
federation.originServer.notifyOnError = true
#設定只有那些Oring版本庫不會被備分
federation.originServer.exclude =
#設定只有那些Oring版本庫會被備分
federation.originServer.include =
|
Pulling主機的設定檔完成修改後重啟WEB,再回到串連後可以看到備分狀況(我剛剛還在想會不會有人想要做雙向備分,絕對不要,因為若是兩人在不同主機Sumit,倒底要誰蓋誰?)
GIT-FLS
很可惜,不知道是不是版本的問題,在push時會發生錯誤(應該是golang寫的),而push時要登錄兩次(網路上有人反應會登錄多次),我的觀察是第一次是取回Gitblit端的設定然後寫入 .git/config ,然後再上傳資料。
#.git/config相關內容
[lfs "http://kent@origin.kentyeh.com.tw/git/r/sd4j.git/info/lfs"]
access = basic
|
可惜,這個功能試不出來
留言
張貼留言