gerrit上的commit msg中关联jira单号(含gerrit的安装)

  这个问题折腾了好久,前期后后大概一个月吧,终于搞定了,查了不少资料,有的不完整,有的彻底就不能用,有的没说完整,因此必定要记录下来,个人心血啊。html

  因为公司在用的gerrit的是正式环境中的,你们都在使用,而且这又是个没接触过的新的配置,因此,担忧在正式服务器上调试影响你们工做,因此只能在其余机器上搭建一套完整的系统来调试,主要是搭建gerrit平台,网上不少都是apache和mysql之类的,搭建下来配置来配置去都有问题,这里给你们推荐一个“gerrit + apache + nginx”,参考:https://blog.csdn.net/peterxiaoq/article/details/73330314java

系统是centos的系统。mysql

准备工做:nginx

  (1)首先安装jdk,这个就很少说了git

  (2)安装apache:yum install httpdweb

  (3)安装nginx: 参考https://blog.csdn.net/zql3315/article/details/54924689   (备注:执行1,2就好了)sql

说明:你可能会想,为啥安装了nginx了还要安装apache,博客了很清楚的说明了缘由,此外这里主要用在执行建立gerrit用户的时候。apache

接下来就开始安装gerrit了,参考博客就行,我把其中重要的部分捡了出来,vim

1.建立gerrit专有用户centos

  adduser gerrit

  su gerrit

2.建好用户之后,咱们能够把以前下载好的gerrit安装包(gerrit-2.13.4.war)拷贝到 /home/gerrit/目录下,一会方便gerrit用户来安装

 在gerrit用户的目录(/home/gerrit/)下面,执行命令:

 java -jar gerrit-2.13.4.war init -d ~/gerrit_site

 咱们安装的时候,能够只在 Authentication method 时输入 http ,以及安装插件时输入“y”,(默认插件是不安装的),其余所有回车用默认值,以下这里:

 (1)Authentication method          [OPENID/?]: http  
  (2)Installing plugins.  
    Install plugin download-commands version v2.11 [y/N]?  
    Install plugin reviewnotes version v2.11 [y/N]?     Install plugin singleusergroup version v2.11 [y/N]?     Install plugin replication version v2.11 [y/N]?     Install plugin commit-message-length-validator version v2.11 [y/N]?

 由于其余配置咱们待会能够经过 etc/gerrit.config 文件进行修改。

  还须要修改listenUrl =http://*:8080/,在http前面加"proxy-  "

到此个人gerrit.config文件内容以下(重点部分如红色标记):

  [gerrit]
    basePath = git
    canonicalWebUrl = http://192.168.8.204:8080/
  [database]
    type = h2
    database = /home/gerrit/gerrit_site/db/ReviewDB
  [index]
    type = LUCENE
  [auth]
    type = HTTP
  [receive]
    enableSignedPush = false
  [sendemail]
    smtpServer = localhost
  [container]
    user = gerrit
    javaHome = /usr/java/jdk1.8.0_101/jre
  [sshd]
    listenAddress = *:29418
  [httpd]
    listenUrl = proxy-http://*:8080/
[cache]
directory = cache

 

 

3.nigix配置:

 你的nginx应该是用root帐户安装的,不然可能出现权限问题。咱们须要从以前的gerrit用户退出来,而后执行下面两条命令:

  cd /etc/nginx/conf.d ; touch gerrit.conf

  而后 vim gerrit.conf,输入以下内容:

  server {
    listen *:81;
    server_name 192.168.8.204; (根据本身的实际状况,输入的是gerrit主机ip)
    allow all;
    deny all;

    auth_basic "Welcomme to Gerrit Code Review Site!";
    auth_basic_user_file /home/gerrit/gerrit.password;

    location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    }
  }
   而后重启nginx:

    service nginx restart

4.登录认证文件

上面的gerrit.conf文件中,咱们看到了:auth_basic_user_file /home/gerrit/gerrit.password,这里咱们须要用apach的 htpasswd 工具来新建这个文件,这也是为何咱们虽然不用到apache的反向代理,仍然须要apache的缘由。

  htpasswd -c /home/gerrit/gerrit.password admin  

  而后输入密码就能够了,这个密码会被加密(通常状况下,我更偏向于用户名和密码设置成同样的,方便记忆,好比个人用户名密码都是admin)

-c表示create,若是咱们想新建别的用户,或者修改某个用户的密码,只须要把 -c 改为 -m 就行了,若是仍是用 -c 而且路径不变的话,就会覆盖掉原来的文件。

注意 :

若是你是在root用户下输入上面的命令 建立了 gerrit.password 文件到 /home/gerrit/ 目录中,你会发如今登陆的时候永远登陆不成功,永远会获得服务器500的错误页面。缘由是 /homt/gerrit/ 文件夹的权限问题。

咱们知道, /home/gerrit/ 是咱们以前新建的gerrit用户的,那么这个文件夹的权限是700,也就是只容许gerrit用户访问,其余组的用户是访问不了的,虽然这个文件的权限拥有root用户的全部权限,可是由于它放在700权限的文件夹下面,因此一样其余用户是访问不到的

这个问题以前纠缠了我很久,经过nginx的日志能够清楚的看到访问拒绝的错误。

因此,咱们须要经过下面的命令,来改变gerrit目录的权限

chmod 755 /home/gerrit

这样,当前目录权限就变成了 drwxr-xr-x ,也就是其余组的用户也拥有了读取和执行的权利。

5.重启gerrit服务

  如上,个人gerrit的安装路径是/home/gerrit/gerrit_site,进入到这里目录,而后进入到里面的bin目录,咱们看到一个gerrit.sh的文件,执行命令:

  sh gerrit.sh restart

6.登录网页

  在浏览器上输入http://192.168.8.204:81便可,而后输入刚才步骤4里的用户名密码便可。而后回引导你作基本的设置,填写fullname 和'SSH Public Keys',这两个都很简答,就不细说了,ssh public keys是为了能下载代码。建立一个新的工程test,你就能够在本地下载代码了(ssh public keys和电脑是强相关的,若是你要在主机A上下载,就要把主机A的public key放上去,若是要在主机B上下,就要把主机B的public key放上去,若是主机重装系统了,你必须从新生成public key放上去,复杂不能下载;个人生成命令:ssh-keygen -t rsa -C anl@hpplay.cn;cat ~/.ssh/id_rsa.pub (public key还有其余生成方式,根据本身的状况能够参考其余人的)

 7.commit-msg关联jira单号

  查了不少,关于这方面的资料不多,而且有的说要装插件,但是我仍是不行,其实简单的改下gerrit.config的配置就能够了,如上,个人gerrit路径是/home/gerrit/gerrit_site,修改这个目录下的etc/gerrit.config,添加以下内容:

  [commentlink "jira"]

    match = ([A-Z]+-[0-9]+)
    link = http://你的jira_url/browse/$1  

其中link中须要填写你的jira的url,好比个人是“link = http://jira.hpplay.cn:6060/browse/$1 ”

你可能会问,“$1”是什么,要怎么传入,他怎么识别提交的commit message的哪些是单号,至少要有个什么标志之类的,怎么触发这个配置生效呢,开始的时候,我也一直在思考这些问题,也一直想不明白,而后就先放一下(后面想通了,这个$1对应的就是math匹配到的字段,格式是“大写字母-数字”),重启了gerrit服务(sh  /home/gerrit/gerrit_site/bin/gerrit.sh restart ), 并提交了一次代码,刷新界面或者从新登录,commit message中包含了个人jira单号,结果达到效果了,以下:

  

看,变成蓝色的超连接了,点击就能够打开jira上这个单号的详细内容,以下:

到此,gerrit上的commit message中关联jira单号算是打通。这样作的好处,是方便代码review的时候能方便看到具体解决了什么问题。

 

 若是你在参考本博客配置的过程当中有什么问题,欢迎留言。

 

其余备注:

(1)yum install -y gitweb  安装gitweb 我的以为没什么用
(2)ssh -p 29418 gerrit@192.168.8.204 gerrit plugin ls 查看已经安装的插件

(3)fatal: remote installation is disabled  要开启,配置以下:

  [plugins]
    allowRemoteAdmin = true

(4)ssh -p 29418 admin@192.168.8.204 gerrit plugin ls报错Permission denied (publickey):
    参考:https://blog.csdn.net/pengjin1985/article/details/7789909

(5)插件安装:

  参考:http://192.168.8.204:8080/Documentation/cmd-plugin-install.html
  ssh -p 29418 admin@192.158.8.204 gerrit plugin install -n download-commands -<download-commands.jar
  ssh -p 29418 admin@192.158.8.204 gerrit plugin install -n download-commands.jar -<./tools/download-commands.jar

 

 

command 注意点备份:

su gerrit
java -jar gerrit-2.12.4.war init -d ~/gerrit_site
验证类型必定要选http
最后的gerrit插件直接会出默认是不安装的,因此若是要安装要选y才会安装
ssh -p 29418 admin@192.168.8.204 gerrit plugin ls
vim gerrit_site/etc/gerrit.config
listenUrl = proxy-http://*:8080/
[plugins]
allowRemoteAdmin = true

sh gerrit_site/bin/gerrit.sh start
exit

若是是很久没用机器了,记得先启动nginx,而后再启动gerrit:  service nginx restart;sh gerrit_site/bin/gerrit.sh start

http://192.168.8.204:81
admin admin
cat ~/.ssh/id_rsa.pub
systemctl status nginx
systemctl start nginx #启动
systemctl stop nginx #中止
systemctl restart nginx #重启
systemctl status nginx #查看运行状态
ssh -p 29418 admin@192.168.8.204 gerrit plugin install -n download-commands.jar /home/gerrit/tools/download-commands.jar
mysql -u root -p123456

gerrit新用户权限开通命令:
htpasswd -b /home/gerrit/gerrit.password username password

gerrit搭建参考:

https://blog.csdn.net/zql3315/article/details/54924689https://blog.csdn.net/peterxiaoq/article/details/73330314 

相关文章
相关标签/搜索