这个问题折腾了很久,前期后后大概一个月吧,终于搞定了,查了很多资料,有的不完整,有的完全就不能用,有的没说完整,所以一定要记录下来,我的心血啊。

  由于公司在用的gerrit的是正式环境中的,大家都在使用,并且这又是个没接触过的新的配置,所以,担心在正式服务器上调试影响大家工作,所以只能在其他机器上搭建一套完整的系统来调试,主要是搭建gerrit平台,网上很多都是apache和mysql之类的,搭建下来配置来配置去都有问题,这里给大家推荐一个“gerrit + apache + nginx”,参考:https://blog.csdn.net/peterxiaoq/article/details/73330314

系统是centos的系统。

准备工作:

  (1)首先安装jdk,这个就不多说了

  (2)安装apache:yum install httpd

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

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

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

1.创建gerrit专有用户

  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/54924689
https://blog.csdn.net/peterxiaoq/article/details/73330314 

转载于:https://www.cnblogs.com/zndxall/p/9356517.html

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

  1. 支持批量查询中通快递单号的推荐软件

    中通快递单号可以一次性查询吗?为了方便用户查询快递物流信息,今天小编就跟大家分享一款辅助软件:"固乔快递查询助手",它可以为用户提供中通快递物流单号的一次性查询功能,下面为大家分享 ...

  2. 想要批量查询中通快递单号的话,要用什么辅助软件来实现

    从事电商的小伙伴是不是经常要对大量中通快递单号进行查询呢?逐个查询的话不但需要认真核对中通快递单号是否正确,这需要浪费大量的时间和精力.今天小编教大家一招,可以帮助大家轻松快速查询大量中通快递单号,一 ...

  3. 手把手教你怎么批量查询中通快递单号

    做电商或者物流的小伙伴,常常会被如何批量查询快递单号并追踪快递物流这个问题所困扰,逐个复制粘贴查询的话,不但浪费精力,也浪费时间.今天小编来分享一个辅助工具:"固乔快递查询助手", ...

  4. win10中Android Studio (不含SDK) 安装后如何相关错误跳坑指南

    win10系统下载最新的Android Studio3.1.3打开界面,创建第一个helloworld的android app,爆红一片,被坑了两天,提示错误如下: gradle sync faile ...

  5. 金蝶云星空单据导入导出(可关联源单)使用说明

    本工具提供的所有文件要在同一个文件夹 本软件需要.NET4.5支持 试用版一次最多导入10行数据 第一次使用时先进行设置 地址处后面一定要有/ 数据库ID通过下面的方法查询 录入完后点测试连接,如果提 ...

  6. 简单分析多个京东快递物流中含有多次派送的单号

    由于京东的发货和物流速度比较快,所以大家一般会在京东上购买商品,所以就有了快递单号,那么该如何快速查询多个京东快递物流,并分析出多次派送的单号呢?下面一起来试试. 材料准备: 一台Win系统的电脑 快 ...

  7. 在WPSOFFICE表格中插入表单域(转)

    在WPSOFFICE表格中插入表单域(转) 不知是软件的BUB或是其他什么原因,笔者发现在WPS OFFICE的表格中无法插入表单域(在通常情况下,表单域放在表格中更易于组织和显示信息),怎样解决这个 ...

  8. 快速查询中通快递物流信息,筛选出更新量为1的单号标色

    快递已成为我们购物的生活的一部分,但是单号中的物流信息如何快速查询出呢?并查看各个单号揽收后没有再发往下一站,也就是快递中的更新量.这里给大家分享快递查询出多个单号物流信息,分析出更新量只有1的单号. ...

  9. 怎样将多个韵达快运单号物流中含有问题件的单号归类

    大家一般都会怎么查询快递单号的物流情况呢?官网?小程序?NONONO,当然是通过一些好用的技巧来,不清楚的宝贝们,可以随小编一起来试试. 材料准备: 快递批量查询高手(注册里的介绍人一栏可填:与我) ...

最新文章

  1. 玩转Web之servlet(四)---B/S是如何使用http协议完成通信过程的
  2. [原创]同一个Tomcat,配置多个context、多个Host
  3. 【USACO】sprime
  4. sicp 3.9题解答
  5. 一页纸项目管理图书和简单模板
  6. 算加权成绩(MATLAB)
  7. 关于为了吃瓜通宵7天写了一个网站却没钱买域名这件小事
  8. 总结卡方检验(Chi-square test)和费舍尔精确检验(Fisher exact test)的区别
  9. 【电脑讲解】文件夹怎么设置密码
  10. WordStream:谷歌广告各指标分析
  11. 【Trailhead题目解析】Prepare your salesforce org for users - 1Set Up the Exchange Rate
  12. Postman之Mock Servers虚拟服务器
  13. Java游戏开发——飞行射击类游戏
  14. python中并集符号_python中列表之间求差集、交集、并集
  15. 买面茶--郭德纲相声
  16. vba按原格式批量合并word文档
  17. 飞桨day-04 NLP实践作业
  18. 一名失败人士对大学教育的一些看法
  19. LEETCODE--mysql查询第二高薪水
  20. Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1

热门文章

  1. 【js基础】js获取时间戳(Date的总毫秒数)的4种方法
  2. el-radio单选回显 打印预览不显示问题
  3. linux psycopg2,在unix上为python 3.5安装psycopg2包
  4. [bzoj] 2851: 极限满月
  5. 苹果手机找不到服务器为什么,为什么iphone连不上电脑 多种解决方法【图文教程】...
  6. 设置EditText自动换行
  7. 【棵岩阅读】专为科研打造的阅读和知识发现工具
  8. 【LAB3-Cisco】策略路由PBR应用
  9. [二]基础数据类型之Long详解
  10. vue 判断页面加载完成_Vue实战040:nprogress页面加载进度条