简单GerRit服务器的搭建(Gitlab+GerRit+Jenkins)

代码审核作为一个开源的代码审核工具,已经被许多公司投入使用,GerRit自带一个代码存储仓库,但是无法做到代码库版本管理。我们一般使用GerRit作为代码审核工具,代码版本使用Gitlab或Github。在代码提交到GerRit仓库后,我们使用Replication插件同步代码。下面就是简单GerRit服务器的搭建和部分权限管理介绍。

GerRit有三种账号管理机制,LDAP鉴权,HTTP,development_become_any_account,第三种方式管理用户最为简单,第一个登录的账号将成为管理员账号。本次安装采用HTTP方式。

本次安装采用Docker安装方式:

docker run --name gerrit1 -p 9000:8080 -p 29418:29418 -v /gerrit1/review_site:/var/gerrit/review_site --restart=always -e AUTH_TYPE=HTTP  -e USER_NAME=root -e USER_EMAIL=xiaer1921@aliyun.com -e SMTP_SERVER=smtp.aliyun.com -e SMTP_SERVER_PORT=465 -e SMTP_ENCRYPTION=ssl -e SMTP_USER=xiaer1921@aliyun.com -e SMTP_CONNECT_TIMEOUT=30sec -e SMTP_FROM=USER -e SMTP_PASS=******* openfrontier/gerrit

命令包括端口映射,逻辑卷映射来保证数据持久化,配置SMTP服务。

采用HTTP方式管理账号需要设置nginx代理。

nginx代理采用Docker安装:

docker run -p 2001:80 -p 8081:8081 --name nginx -v /nginx/www/html:/www/html -v /nginx/default.conf:/etc/nginx/conf.d/default.conf -v /nginx/logs:/wwwlogs -v /nginx/DockerFile/nginx/conf/h    tpasswd/gerrit.passwd:/etc/nginx/conf.d/gerrit.passwd nginx

逻辑卷映射包括网页信息,nginx配置,nginx日志信息,http代理用户信息。

修改nginx配置信息如下:

server {
#config agency listen port
      listen port;
#config agency url
      server_name IP;
#^~ / is a way to express that url's outset is '/', just like 47.94.201.186/*
      location ^~ / {
            auth_basic "Restricted";
            auth_basic_user_file /etc/nginx/conf.d/gerrit.passwd;
        proxy_pass        http://IP:port;
        proxy_set_header  X-Forwarded-For $remote_addr;
        proxy_set_header  Host $host;
      }
    }

使用apache生成用户名和密码:

# pwd
/nginx/DockerFile/nginx/conf/htpasswd 
# htpasswd  gerrit.passwd jiche
New password:
Re-type new password:
Adding password for user jiche

之后在账户下·保存ssh公钥,便于以后使用。GerRit所使用的ssh端口是29418。我们可以通过以下方式验证是否成功。

#ssh -T -p 29418 root@**.**.***.***

**** Welcome to Gerrit Code Review ****

Hi root, you have successfully connected over SSH.

Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:

git clone ssh://root@**.**.***.***:29418/REPOSITORY_NAME.git
在通过网页进入页面之后,我们可以设置账户邮箱,组和项目。

我们需要在代码文件中加入.gitreview文件,这样才能使用git review命令去提交代码到GerRit代码库。git clone代码之后加入以下代码:

$ cat .gitreview
[gerrit]
host=47.94.201.186
port=29418
project=maven-testng-gerrit-gitlab.git

这时候我们需要管理员权限去push 代码,命令如下:

# git push origin master 

如果在设置公钥之后任然不能clone代码,请设置ssh代理,如下:

#eval "$(ssh-agent -s)" 
#$ssh-add

权限设置如下:

新建小组,同时使用小组对项目进行权限管理,包括代码审核机制,rebase等。如果在提交代码时出现邮箱尚未设置错误,请设置邮箱或者在用户权限中加入Forge Author Identity and Forge Committer Identity 这两个权限。

下面是在审核完成之后,我们需要同步代码到Gitlab,这时候我们需要安装Replication插件。

# find . -name "gerrit.war"
./review_site/bin/gerrit.war
./review_site/bin/gerrit_site/bin/gerrit.war
[root@jiche gerrit1]# cd review_site/bin/
[root@jiche bin]# pwd
/gerrit1/review_site/bin 
# java -jar gerrit.war init -d gerrit_site --batch --install-plugin replication
Initialized /gerrit1/review_site/bin/gerrit_site
# cp replication.jar /gerrit1/review_site/plugins/.

之后我们可以修改replication的配置文件来进行同步配置:

[remote "maven-testng-gerrit-gitlab"]
        projects = maven-testng-gerrit-gitlab
        url = http://user:passwd@**.**.***.***:2018/dev-group/maven-testng-gerrit-gitlab.git
        push = +refs/heads/*:refs/heads/*
        push = +refs/tags/*:refs/tags/*
        push = +refs/changes/*:refs/changes/*
        threads = 3
        rescheduleDelay = 15

url 部分可以使用HTTP认证,也可以使用SSH认证,我在配置的时候出现了reject ip错误,提前设置不需要确认服务器公钥放弃安全或者是提前将公钥加入到known文件也不行,所以只能使用HTTP认证。

重新导入replication插件如下:

# ssh -p 29418 root@47.94.201.186 gerrit plugin reload replication
# ssh -p 29418 root@47.94.201.186 replication start --all

查看Gitlab或者是日志来验证配置是否成功。如果配置成功,那么我们Submit将代码合并到相应分支时就会将代码同步到Gitlab仓库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值