Jenkins+Gerrit创建新工程手顺

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mr_raptor/article/details/76269510

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配置文件

扫描二维码关注公众号,回复: 3322699 查看本文章

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
url = [email protected]:group /project .git
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


猜你喜欢

转载自blog.csdn.net/mr_raptor/article/details/76269510
今日推荐