博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单GerRit服务器的搭建(Gitlab+GerRit+Jenkins)
阅读量:4071 次
发布时间:2019-05-25

本文共 3571 字,大约阅读时间需要 11 分钟。

代码审核作为一个开源的代码审核工具,已经被许多公司投入使用,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 jicheNew 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.186port=29418project=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 replicationInitialized /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仓库。

转载地址:http://rfgji.baihongyu.com/

你可能感兴趣的文章
VIM滚屏操作
查看>>
EMC 2014存储布局及十大新技术要点
查看>>
linux内核内存管理(zone_dma zone_normal zone_highmem)
查看>>
将file文件内容转成字符串
查看>>
循环队列---数据结构和算法
查看>>
优先级队列-数据结构和算法
查看>>
链接点--数据结构和算法
查看>>
servlet中请求转发(forword)与重定向(sendredirect)的区别
查看>>
Spring4的IoC和DI的区别
查看>>
springcloud 的eureka服务注册demo
查看>>
eureka-client.properties文件配置
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
platform_device与platform_driver
查看>>
platform_driver平台驱动注册和注销过程(下)
查看>>
.net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
查看>>
c# 如何调用win8自带的屏幕键盘(非osk.exe)
查看>>
build/envsetup.sh 简介
查看>>
C++后继有人——D语言
查看>>
Android framework中修改或者添加资源无变化或编译不通过问题详解
查看>>
linux怎么切换到root里面?
查看>>