Linux环境搭建Gerrit服务器与升级Gerrit服务器

1.Gerrit是什么

       Gerrit是Google开发的开放源代码的代码审核工具,可以方便得进行代码审核工作。代码审核方便事前和事后加强监督和管理,从而提高工程质量,保证产品的高质量开发。

       Gerrit本身就包含Git,网上有各种Gerrit和GitLab混搭的方法,我看完全是没有必要的,只要搭建Gerrit即可。

       Gerrit+Jenkins是一般公司的搭配,但Jenkins配置比较复杂,而且其实每日进行日构建,也完全可以达到版本纠错。但Gerrit之类的代码审核工具,是很有必要存在的。

2.在Linux上搭建Gerrit服务器

      一般建议在Linux上搭建Gerrit服务器。

     1)下载Gerrit      

      首先,下载Gerrit源代码安装包。Gerrit的下载地址是:https://gerrit-releases.storage.googleapis.com/index.html

      2)安装JAVA

       Gerrit是用JAVA编写的,所以,确保你本地有JAVA运行环境。一般的Linux都安装了默认的JAVA运行环境,但如果没有,你应该安装。

      如果不懂JVM、JRE和JDK三者关系的,不明白为什么JAVA程序为什么要安装JAVA运行环境的,可以查更多资料了解,但如果想安装JAVA运行环境,可以有几种方法:

      1)普通方法,下载JAVA运行环境或者JDK,然后修改环境文件;

      现在的JAVA服务器,已经要求用IE下载JRE或者JDK了,如果可以用IE可直接下载。

      可以用/etc/profile 等方法修改环境变量。

      典型的配置文件修改如下:

      

export JAVA_HOME=JAVA程序安装目录或者解压包目录
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

      2)CentOS用yum安装,Ubuntu用apt-get install 安装。

      

//ubuntu下安装JAVA的方法
sudo apt-get update
sudo apt-get install oracle-java8-installer

//CentOS下安装JAVA的方法
yum install java-1.8.0-openjdk*

     当在程序中打java --version出现版本信息的时候,就可以认为JAVA安装成功了。

     3)Gerrit安装

     下载好Gerrit包之后,执行安装命令。

      

java -jar Gerrit安装包 init -d Gerrit安装目录

     安装时,有相关配置选项,一般情况下,默认安装就可以;如果有个性化修改,可以个性化修改。

     一般情况下,如果是Gerrit服务器,部分安装参考会要求用gerrit用户,我个人感觉没有必要。当然,如果创新新的用户有如下好处:Linux是多用户和多环境的,创建一个全新的用户,方便不同用户访问不同的权限并具有不同的程序运行环境。

     4)Gerrit+Nginx配置

      Gerrit服务器运行的方法是:在Gerrit安装目录,执行 ./gerrit.sh start

     但如果用web直接登录Gerrit,会出现各种问题。一般会建议用Nginx作为反向代理,为Gerrit提供相应目录。

      (1)Nginx安装:

         Nginx下载地址:https://nginx.org/download/

        下载完成以后,直接解压安装即可。

        一般情况下,安装要求如下:

        

wget 远程下载链接

## 解压
tar -zxvf Nginx安装包.gz

##进入nginx目录
cd 解压后的安装包

## 配置,如不加--prefix= 就会安装到默认路径下
./configure --prefix=/usr/local/nginx

# make
make
make install

    (2)Nginx + Gerrit配置

       首先,配置Gerrit,Gerrit的配置文件在  Gerrit安装路径/etc/gerrit.config,打开gerrit.config进行配置。

           

[gerrit]
        basePath = git
        canonicalWebUrl = http://网址:(端口号,我配置为80)/  #网址加端口号,最主要和Nginx对应
        serverId =  #serverID
[database]
        type = h2 #可修改,我是用默认的
        database = /home/ad/review_site/db/ReviewDB #DB路径
[index]
        type = LUCENE
[auth]
        type = http
        logoutUrl = http://192.168.1.99:80
[receive]
        enableSignedPush = false
[sendemail]
        smtpServer = localhost
[container]
        user = ad
        javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre #JRE路径,我用的是默认路径
[sshd]
        listenAddress = *:29418 #默认ssh端口,我采用默认的,可修改
[httpd]
        listenUrl = http://*:Gerrit实际的端口号,可修改,不冲突即可/
[cache]
        directory = cache
[sendemail]
        #这部分可以不要
        enable = true
        smtpServer = smtp地址
        smtpServerPort = smtp端口号
        smtpUser = smtp用户
        from = gerrit库
[gitweb]
        #随后添加 

        Nginx配置,可以在gerrit配置文件中进行配置Nginx 服务。默认配置目录是/etc/nginx/,如果没有默认安装,可以用whereis nginx进行安装。

      在目录下,可以新建一个gerrit.conf,并进行配置。

      

server {
        listen 监听端口,我默认的是80;
        listen [::]:监听端口,我默认的是80;

        server_name localhost;
        allow all;
        deny all;

        auth_basic "Welcomme to Gerrit Code Review Site!";
        auth_basic_user_file ~/review_site/etc/passwd(可根据自身实际进行修改);

        location / {
            proxy_pass http://localhost:(上面Gerrit的监听端口);
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
        }
}

     弄好以后,重启Gerrit和Nginx。

     重启Gerrit:Gerrit安装路径/bin/gerrit.sh  restart

     重启Nginx:/etc/init.d/nginx restart

5)安装gitweb

      安装命令行: 

      ubuntu: apt-get install gitweb
      redhat/centOS: yum install gitweb

      配置gitweb,配置文件为 /etc/gitweb.conf

      关键是修改$projectroot

      同时,修改原来gerrit.config

      

[gitweb]
    type = gitweb
    cgi = /usr/lib/cgi-bin/gitweb.cgi

3.Gerrit权限管理和审核代码

1)建立用户       

        Web管理很重要的一个工作就是权限管理和ACL管理,这样才能保证数据的安全和互联网上信息的安全。所以,在一个Web管理系统里,用户分类和权限管理是非常有必要的。

       在Gerrit里面,首先要简历用户名和密码,用户名和密码建立通过Linux,而且,gerrit.conf也建立了用户名和密码验证的路径。到密码验证路径下,执行 建立用户和密码的命令,会修改相应密码。

        

htpasswd -m passwd(即文件名) 用户名

       随后,用web登录gerrit服务器,用刚建立的用户名和密码,然后,可以修改相关信息。同时,可以把自身的公钥放到Gerrit库上。

       Gerrit配置公钥需要本地有公钥,公钥建立方法:

      (1)在Git Bash里执行 ssh-keygen -t rsa -b 4096 -C [email protected]

      (2)把 “C:\Users\用户\.ssh”的id_rsa.pub打开,把里面的文件输入到Add Key里面。

       注意:如果用户的相关信息已存在,则可能会有500 Internal Error ,不创建相关信息即可。

  2)作为管理员,可以对用户分组,并对组别权限进行设置。

  一般情况下,用Gerrit会禁止用户直接合入。

   方法为,用web进入gerrit,选择“People” ——> "Create New Group",把默认的用户给加进去。

   

       可以设置用户禁止直接合入代码。

       选择相应的工程----->"Acess" ----->"Add Reference" ------> "Add Permission",选择“Push”,选择需要的Group,然后,权限改为BLOCK,即可禁止用户直接合入代码。

       备注:只有管理员才有较大权限,其他人可以分配一般开发的权限。读权限是必须放开的,具体参考禁止直接push权限。

4.升级Gerrit服务器

      较低版本的Gerrit会缺失相应的功能,故对Gerrit进行升级。

     升级步骤:

     1)备份原有程序(建议整体迁移到另一个文件);

     2)关闭原来的程序,下载新版本后,执行java -jar 新版本 init -d 原来的安装目录。依然会提示你相应修改,默认不变即可;

     3)执行原来的运行程序,如果出错,执行java -jar 新版本r reindex -d 原来的安装目录

后记:

        在敏捷式开发中,代码审核是很重要的一环,Gerrit是必不可少的一部分,也是团队整体提高开发能力的重要一环。笔者也感觉到:人和人的差距其实并不大,关键是理念和运用工具的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章