1. Gerrit创建新工程
管理员登录Gerrit,Project创建新工程,工程名与远程Git库工程名必须一样。
2. Jenkins配置
> 配置review Jobs
Git配置为Gerrit的本地git库地址
添加Gerrit Trigger配置
> 配置远程Git代码库自动部署
Git配置为远程Git库地址
添加构建触发器:Poll SCM -> H/5 * * * *
添加构建后操作:Execute Shell
3. 在远程Git库里添加.gitreview配置文件
clone到本地
$git clone [email protected]:group/project.git
$ cd project
$ vim .gitreview
1
2
3
4
|
[gerrit]
host=xx.xx.xx.xx
port=29418
project=
project.git
defaultbranch=develop
|
$git add .gitreview
$git commit -m "add .gitreview"
$git push
4. 在Gerrit里git目录下删除原创建的工程,clone远程git库
$cd GERRIT_HOME/git
$rm -rf project.git
$git clone --bare [email protected]:group/project.git
$git config --global user.name 'gerrit'
$git config --global user.email 'GERRIT_ADMIN_EMAIL'
解决中文乱码
$ git config --global core.quotepath false
$ git config --global i18n.logoutputencoding utf8
$ git config --global i18n.commitencoding utf8
支持gitweb
$ git config --file /home/gerrit/gerrit_site/etc/gerrit.config gitweb.cgi /var/www/git/gitweb.cgi
$ git config --file /home/gerrit/gerrit_site/etc/gerrit.config --unset gitweb.url
5. 在etc/replication.config文件里添加远程git库的配置
$ vim etc/replication.config
1
2
3
4
5
6
7
|
[remote
"project"
]
projects =
project
push = +refs
/heads/
*:refs
/heads/
*
push = +refs
/tags/
*:refs
/tags/
*
push = +refs
/changes/
*:refs
/changes/
*
threads = 3
|
6. Jenkins Webhook
在Jenkins里触发远程构建,设置密码,在Git仓库的Webhook里设置 hook Url:
http://xx.xx.xx.xx/buildByToken/build?job=project&token=PASSWORD
7. 添加新用户
# htpasswd -c /home/gerrit/gerrit_site/etc/passwords gerrit
8. run index
#java -jar gerrit-2.12.war reindex -d /home/gerrit/gerrit_site/
-----------
- 如果有项目在使用记得备份 /etc/gerrit/git 目录
- rm -fr /etc/gerrit
- mysql -uroot -p
- >>>drop database gerritdb;
- >>>create database gerritdb;
- 重新安装吧。
- 如果 /etc/gerrit/logs/error_log 里出现 java.lang.IllegalStateException: Missing project All-Projects 这个错误,那就重新安装下,记得清除一下 db。
手动安装gerrit插件
[gerrit@115r ~]$ pwd
/home/gerrit
[gerrit@115r ~]$ ls
gerrit-2.11.3.war gerrit_site
进行插件安装,下面安装了四个插件
[gerrit@115r ~]$ java -jar gerrit-2.11.3.war init -d gerrit_site --batch --install-plugin replication
Initialized /home/gerrit/gerrit_site
[gerrit@115r ~]$ java -jar gerrit-2.11.3.war init -d gerrit_site --batch --install-plugin reviewnotes
Initialized /home/gerrit/gerrit_site
[gerrit@115r ~]$ java -jar gerrit-2.11.3.war init -d gerrit_site --batch --install-plugin commit-message-length-validator
Initialized /home/gerrit/gerrit_site
[gerrit@115r ~]$ java -jar gerrit-2.11.3.war init -d gerrit_site --batch --install-plugin download-commands
Initialized /home/gerrit/gerrit_site
查看plugins目录,发现已经有插件了
[gerrit@115r ~]$ cd gerrit_site/plugins/
[gerrit@115r ~]$ ls
commit-message-length-validator.jar download-commands.jar replication.jar reviewnotes.jar
查看安装了哪些插件
[gerrit@115r ~]$ ssh-gerrit gerrit plugin ls
Name Version Status File
-------------------------------------------------------------------------------
commit-message-length-validator v2.11.3 ENABLED commit-message-length-validator.jar
download-commands v2.11.3 ENABLED download-commands.jar
replication v2.11.3 ENABLED replication.jar
reviewnotes v2.11.3 ENABLED reviewnotes.jar
或者登陆gerrit也可查看
------------------------------------------------注意------------------------------------------------
gerrit手动同步代码到gitlab中心仓库上
[gerrit@115r ~]$ ssh-gerrit gerrit --help //查看帮助,发现gerrit COMMAND --help可查找命令帮忙
[gerrit@115r ~]$ ssh-gerrit replication start --help //查看replication同步命令的用法
--------
reject HostKey: git.oschina.net
没有将git.oschina.net放到known_host文件里
# sh -c "ssh-keyscan -t rsa git.oschina.net >> /home/gerrit/.ssh/known_hosts"
# sh -c "ssh-keygen -H -f /home/gerrit/.ssh/known_hosts"
-----
git push not permitted
先执行下面的命令测试下:
ssh -T git.oschina.net
如果没有权限,说明key有问题。
看下gerrit的用户Gitconfig里username和email和远程的Git库里用户名和email是否一致。
----
replication push not permitted
可能是gerrit库与远程库不同步
进入gerrit/git/XX_Project
执行git remote update,同步下
在config下添加:
url = xxxx
fetch = +refs/*:refs/*
mirror = true
测试命令:
-----------------
ssh -p 29418 -i ~/.ssh/id_rsa xx.xx.xx.xx replication start