这些天搭建了一个Gerrit + Jenkins +JazzHub的环境,记录一下以防忘记。
Gerrit下载:
http://gerrit-releases.storage.googleapis.com/index.html
下载之后是一个war包,安装gerrit十分简单,运行下面的命令,其中“gerrit_test_site"指定gerrit安装的位置。
java -jar gerrit.war init -d ~/gerrit_test_site/
之后会出现一系列的问题:
Location of Git repositories [git]:
这个问你,git的库放在哪个地方?因为Gerrit本身也是基于Git,它自己可以管理代码的版本控制。如果保持默认,就是安装在 /root/gerrit_test_site/git下面,以后,Gerrit启动之后,会自动发现里面的版本库,列在Projects页面。
Authentication method [DEVELOPMENT_BECOME_ANY_ACCOUNT/?]
这个问你采用哪种认证方式,可以支持三方认证,比如github,google account,还支持LDAP,http等等,如果只是测试,可以选择DEVELOPMENT_BECOME_ANY_ACCOUNT,默认登陆的第一个用户就是管理员。
SSH的port默认是29418,这个不用改。
如果要使用反向代理的话,”behide reverse proxy"选Y
Install plugin replication version v2.9.3 [y/N]?
这个很重要,因为我们的项目托管在JazzHUB上面,又想利用Gerrit的review功能,所以,只能用replicate的功能,每次review过了,gerrit就把code从refs/for/master分支merge到master分支,然后把code复制(commit&push)到JazzHub或者Github上,这样就可以保持项目一致性。
安装完了之后,就需要初始化git的库了:
创建一个和JazzHub同名的文件夹,外加.git, 只有这样Gerrit才能识别到,否则在Projects栏中看不到。
mkdir MyWebAppTonyL.git
把jazzhub上的工程clone到Gerrit的git中,注意要用--bare参数,不要把workspace也clone过来
git clone --bare https://hub.jazz.net/git/leungtk/MyWebAppTonyL MyWebAppTonyL.git/
因为需要replicate到Jazzhub,所以需要在etc目录中建立一个replication.config的文件。
$gerrit/etc/replication.config
[remote "MyWebAppTonyL"]
projects = MyWebAppTonyL
url = https://hub.jazz.net/git/leungtk/MyWebAppTonyL MyWebAppTonyL.git/
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
push = +refs/changes/*:refs/changes/*
threads = 3
在etc目录下,添加jazzhub的用户名和密码
$gerrit/etc/secure.config
[remote "MyWebAppTonyL"]
username = wangpbj@cn.ibm.com
password = *******