Gerrit安装手册-Ldap认证

前提: GitLab **与 Gerrit

###开发风格:

        gitlab的特点是一个人维系一个分支。

        gerrit的特点是一个团队维系一个分支。(这里的分支对应一个业务需求)

###权限管理:

        gitlab提供了比较多的选择,可以根据需要创建project,每个团队可以根据自己的需求管理自己的代码,方式更加的灵活。

        gerrit比较单一,而且权限配置比较复杂,往往都是要联系管理员做出修改,每个团队很难做到对代码的个性化管理。

###代码评审:

        gitlab是以merge request作为一次review,merge request中可能包含多个 commit,如果review不通过也不需要发起另一次merge request。

        gerrit是以commit作为一次review,由于changeId的存在,可以对一次commit反复的进行review。

如果task划分的粒度够细的话,并不会影响各个团队的review习惯。

###团队协作:

        gitlab可以选择公开代码,团队间可以看到互相的代码,有利于团队的协作。

        gerrit由于权限控制问题,只能在权限范围内公开代码。

###信息共享:

        gitlab 可以提供issues,wiki等功能方便开发者与使用者之间的沟通,并且gitlab可以无缝的与一些项目管理工具集成,比如:jira。

        gerrit 这个方面比较欠缺。

        gitlab每个项目都有自己的wiki,很方便查看。

###有关gitlab+gerrit+jenkins集成:

        现在比较流行的CI系统,gitlab提供代码查看功能,gerrit保存真正得代码,jenkins通过plugin发布 gerrit上的代码。

        这样做没有体现出gitlab的特点,而且由于gerrit的权限问题,很多代码无法放在gitlab上,gitlab沦为代码查看工具,很多功能形同虚设。

有关docker:

        考虑到公司将使用docker技术,对于dockerfile存放等问题,gitlab比gerrit支持的更好(因为权限,文件查看的问题)。

###总结

        gerrit作为谷歌管理安卓项目的版本管理工具还是有其优点的,

        多部门之间的权限隔离,强制review的机制都是其优点,

        反观gitlab作为github的开源版,遵循了一套开源的流程,比较符合大多数人得习惯。

        所以,通过比较,推荐使用gitlab作为版本管理工具,并且不与gerrit做集成。

安装:

一、安装java jdk11

Index of java-local/jdk

cd /usr/local

mkdir javajdk

cd javajdk

tar -zxvf jdk-11_linux-x64_bin.tar.gz

mv jdk-11 javajdk

cd javajdk


vim /etc/profile

JAVA_HOME=/usr/local/javajdk/javajdk

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

export PATH JAVA_HOME CLASSPAHT

验证安装是否成功

java -version

echo $JAVA_HOME

拓展:卸载jdk

首先执行命令查看服务器下的jdk的版本:命令如下:rpm -qa|grep jdk

然后执行命令: yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64将上面查询出来的每个版本以此删掉即可。

二、安装mysql(可以不装,有默认)

1、安装数据库mysql

yum -y install mariadb*

2、启动数据库

systemctl start mariadb systemctl enable mariadb

3、初始化数据库

[root@codesweet ~]# mysql_secure_installation
Enter current password for root (enter for none):  # 输入数据库超级管理员root的密码(注意不是系统root的密码),第一次进入还没有设置密码则直接回车
Set root password? [Y/n]  # 设置密码,y
New password:  # 新密码 123456
Re-enter new password:  # 再次输入密码 123456
Remove anonymous users? [Y/n]  # 移除匿名用户, y
Disallow root login remotely? [Y/n]  # 拒绝root远程登录,n
Remove test database and access to it? [Y/n]  # 删除test数据库,y
Reload privilege tables now? [Y/n]  # 重新加载权限表,y。或者重启服务也许

4、数据库字符集配置

a. vim /etc/my.cnf ,在 [mysqld] 标签下添加:

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

b. vim /etc/my.cnf.d/client.cnf ,在 [client] 标签下添加:

default-character-set=utf8

c. /etc/my.cnf.d/mysql-clients.cnf ,在 [mysql] 标签下添加

default-character-set=utf8

d. 重启数据库服务

systemctl restart mariadb

三、安装git

安装:yum install git
验证:git --version

以下操作待验证是否操作

Git初始化并生成授权证书:

git初始化:

[root@centos7 ~]# git config --global user.name "jingjing"

[root@centos7 ~]# git config --global user.email "2573135193@qq.com"

查看设置的信息:git config --list

②生成授权证书:ssh-keygen -t rsa -C “邮箱”

查看证书:cd ~/.ssh
将公钥id_rsa.pub添加到gitlab的ssh key:

四、安装gerrit

①下载gerrit安装包,我使用了最新版本3.4.0。
下载地址:Gerrit Code Review Releases | Gerrit Code Review

②使用root用户权限操作:新建gerrit专用用户(此处建议直接root安装在非家目录位置,后续安装相关插件的时候,安装的家目录插件会不起作用,似乎是安装在家目录原因,

adduser gerrit

su gerrit

将gerrit安装包(gerrit-3.4.0.war)拷贝到/home/gerrit/目录下用来安装

③安装gerrit
在gerrit用户的目录(/home/gerrit/)下面,执行下面的命令开始安装:

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

注意:

&我们安装的时候,在Authentication method时输入http,

拓展:我认为gerrit安装比较难的地方在于它有多种身份验证方法,身份验证方法决定了如何登录Gerrit。

如果你想挂入某个现有的身份验证提供方(例如GoogleAccounts),那么可以使用OpenID;如果是用于测试和学习,可以选择最简单的development_become_any_account。如果你选择了development_become_any_account,在页面顶端会有一个Become链接,通过它可以进入注册/登录页面;

HTTP认证也是可选的认证方式,此认证方式下需要配置Apache的反向代理,并在Apache中配置Web站点的口令认证,通过口令认证后gerrit在创建账号的过程中会询问用户的邮件地址并发送确认邮件。–参考资料:烤鸭的gerrit使用总结-CSDN博客

1、 ldap认证的初始化配置方式如下:

gerrit_site会在当前目录下创建一个这样的文件夹,输入上面命令,就会进入交互安装模式:

*** Gerrit Code Review 2.13.11
*** 
Create '/home/gerrit/code_review' [Y/n]? 回车
*** Git Repositories
*** 
Location of Git repositories   [git]: 回车

*** SQL Database
*** 
Database server type           [h2]:回车

*** User Authentication
*** 

Authentication method          [OPENID/?]: LDAP
LDAP server                    [ldap://localhost]: ldap://121.51.39.239
LDAP username                  : cn=admin,dc=codesweet,dc=com
cn=admin,dc=bkce,dc=com's password :  123456
              confirm password :  123456
Account BaseDN                 [DC=168,DC=56,DC=85]: ou=users,dc=codesweet,dc=com
Group BaseDN                   [ou=users,dc=bkce,dc=com]: ou=users,dc=codesweet,dc=com
Enable signed push support     [y/N]? n

*** Review Labels
*** 
Install Verified label         [y/N]? 回车

*** Email Delivery
*** 
*** 
SMTP server hostname           [localhost]: 回车
SMTP server port               [(default)]: 回车
SMTP encryption                [NONE/?]: 回车
SMTP username                  : 回车

*** Container Process
*** 

Run as                         [gerrit]: 回车
Java runtime                   [/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre]: 回车
Copy gerrit-2.13.11.war to /home/gerrit/code_review/bin/gerrit.war [Y/n]? y
Copying gerrit-2.13.11.war to /home/gerrit/code_review/bin/gerrit.war

*** SSH Daemon
*** 

Listen on address              [*]: 回车
Listen on port                 [29418]: 回车

Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v152
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? y
Downloading https://repo1.maven.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.52/bcpkix-jdk15on-1.52.jar ... OK
Checksum bcpkix-jdk15on-1.52.jar OK

Gerrit Code Review is not shipped with Bouncy Castle Crypto Provider v152
** This library is required by Bouncy Castle Crypto SSL v152. **
Download and install it now [Y/n]? y
Downloading https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.52/bcprov-jdk15on-1.52.jar ... OK
Checksum bcprov-jdk15on-1.52.jar OK
Generating SSH host key ... rsa... dsa... done

*** HTTP Daemon
*** 

Behind reverse proxy           [y/N]? 回车
Use SSL (https://)             [y/N]? 回车
Listen on address              [*]: 回车
Listen on port                 [8080]: 回车
Canonical URL                  [http://linux-node83.domain.local:8080/]: http://121.51.39.239:8080/

*** Cache
*** 

*** Plugins
*** 
Installing plugins.
Install plugin commit-message-length-validator version v2.13.11 [y/N]? y
Installed commit-message-length-validator v2.13.11
Install plugin download-commands version v2.13.11 [y/N]? y
Installed download-commands v2.13.11
Install plugin hooks version v2.13.11 [y/N]? y
Installed hooks v2.13.11
Install plugin replication version v2.13.11 [y/N]? y
Installed replication v2.13.11
Install plugin reviewnotes version v2.13.11 [y/N]? y
Installed reviewnotes v2.13.11
Install plugin singleusergroup version v2.13.11 [y/N]? y
Installed singleusergroup v2.13.11
Initializing plugins.
No plugins found with init steps.

2、启动 gerrit

/home/gerrit/code_review/bin/gerrit.sh restart 

验证

[root@centos7 bin]# netstat -ltpn|grep -i gerrit
tcp6       0      0 :::29418                :::*                    LISTEN      1974/GerritCodeRevi 
tcp6       0      0 :::8080                 :::*                    LISTEN      1974/GerritCodeRevi 

3、配置文件

上面的安装步骤后续如果有些配置想要更改的话,可以对 /home/gerrit/code_review/etc/gerrit.config 文件进行更改 

[gerrit]
        basePath = git
        serverId = 3c7f6094-4b63-4c30-a4e3-7e1805a3f1ed
        canonicalWebUrl = http://121.51.39.239:8080/
[database]
#        type = mysql
#        hostname = localhost
#        database = reviewdb
 #       username = gerrit
[auth]
        type = LDAP
[ldap]
        server = ldap://121.51.39.239
        username = cn=admin,dc=codesweet,dc=com
        accountBase = ou=users,dc=codesweet,dc=com
        groupBase = ou=users,dc=codesweet,dc=com
[receive]
        enableSignedPush = false
[sendemail]
        #smtpServer = localhost
        enable = true
        smtpServer = smtp.qq.com
        smtpServerPort = 465
        smtpEncryption = SSL
        sslVerify = true
        smtpUser = 24611***@qq.com
        smtpPass = dmytimlooemd***
        from = 24611***@qq.com
[container]
        user = gerrit
        javaHome = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.an7.x86_64/jre
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = http://*:8080/
[cache]
        directory = cache
[download]
        scheme = ssh
        scheme = repo_download

#[gitweb]
#        type = gitweb
 #       cgi = /var/www/git/gitweb.cgi

4、配置 gerrit 服务器邮箱

a. 如果需要邮箱推服务,就是提交代码后,会有邮件告知 code review 审查人员。那么就需要配置 gerrit 服务器邮箱,可以在 gerrit.config 中进行配置。

b. gerrit 服务器邮箱只有一个,起转发作用,就是将某个 gerrit 客户端的信息转发给另一个或多个客户端。

c. 如果你的服务器邮箱配置的是 qq 邮箱 gerrit.config 中 sendemail 字段中如果是qq邮箱,则按照下述配置,里面最终要的一点不要搞错,smtpPass填的不是邮箱密码,而是授权码,这个授权码是需要提前到qq邮箱的设置中开启smtp授权的,开启后会得到授权码。开启方法:qq邮箱如何开启SMTP服务

[sendemail]
        #smtpServer = localhost
        enable = true
        smtpServer = smtp.qq.com
        smtpServerPort = 465
        smtpEncryption = SSL
        sslVerify = true
        smtpUser = 24611***@qq.com
        smtpPass = dmytimlooemd***
        from = 24611****@qq.com

d. 163 邮箱也类似的步骤

[sendemail]
        #smtpServer = localhost
        enable = true
        smtpServer = smtp.163.com
        smtpServerPort = 465
        smtpEncryption = SSL
        sslVerify = true
        smtpUser = 788844***@163.com
        smtpPass = dmdddsemd***
        from = 788844***@163.com

$ 第一次登陆gerrit的用户默认为超级管理员用户,管理员可以创建仓库,后面登陆的用户都是普通用户,普通用户无法创建仓库,除非被管理员赋予权限

5、web 端登录 gerrit

关闭防火墙,selinux

a. 打开浏览器:http://ip:8080

五、配置nginx代理

nginx代理:gerrit216-http.conf

server {
     listen *:8081;
     server_name localhost;
     allow   all;
     deny    all;

     auth_basic "Welcomme to Gerrit Code Review Site!";

     location / {
        proxy_pass  http://localhost:8081;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
     }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值