docker部署codereviewgerrit

更新时间:2023-06-08 14:06:51 阅读: 评论:0

docker部署codereviewgerrit
gerrit官⽹上有最新的relea,但是下载服务器应该是在国外的缘故,⽆法访问(不是慢...),所以只能放弃该⽅法。另外从⽹上冲浪得知安装relea版还需要准备各种环境,⽐如Java,jdk,玛利亚数据库(mariaDB),反向代理之类的,还是⽐较⿇烦。种种理由坚定了我曲线review的决⼼。
1、先搜索⼀下gerrit的docker镜像
sudo docker arch gerrit
2、下载镜像
我找了个标星第⼆的版本:gerritcodereview/gerrit,描述说是官⽅镜像,别的不说,官⽅的感觉就正规⼀点。
命令:sudo docker pull gerritcodereview/gerrit
默认下载latest版,即最新版。
3、运⾏(和开机⼀样简单)
sudo docker run --name gerrit_test -d -p 8090:8080 gerritcodereview/gerrit:latest
-p后⾯带的是端⼝映射,这个⾃⾏设定,视⽹络环境⽽定,有的机器设置了端⼝的限制。
简单之处在于:不⽤java环境、数据库、反向代理的设置等。
4、另⼀个port
准备结合git玩⼀下了,这时发现⼀个问题:现在⼀般会通过ssh鉴权来clone repository,然⽽,ssh是tcp协议的,是有端⼝的,配完ssh 的config发现⽤不了。
folw
.ssh/下的的config配置要如下(ssh访问)
差之毫厘谬以千里
每次远程登录Linux的时候,Linux都要检查⼀下,当前访问的计算机公钥是不是在~/.ssh/know_hosts中,这个⽂件时OpenSSH记录的。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来配置的。默认情况下,StrictHostKeyChecking=ask。简单所下它的三种配置值:
1.StrictHostKeyChecking=no
最不安全的级别,当然也没有那么多烦⼈的提⽰了,相对安全的内⽹测试时建议使⽤。如果连接rver的key在本地不存在,那么就⾃动添加到⽂件中(默认是known_hosts),并且给出⼀个警告。
2.StrictHostKeyChecking=ask #默认的级别,就是出现刚才的提⽰了。如果连接和key不匹配,给出提⽰,并拒绝登录。杜鹃圆舞曲教案
3.StrictHostKeyChecking=yes #最安全的级别,如果连接与key不匹配,就拒绝连接,不会提⽰详细信息。百万英镑
⼀般设为“no”。
UrKnownHostsFile /dev/null 表⽰忽略known host⽂件
port就是gerrit ssh服务监听的端⼝,所以在运⾏docker时的端⼝映射还需要加上-p 8091:29418,⾄于8091,是我们随便取的⼀个docker,⽽29418则是gerrit监听的默认端⼝,因为gerrit服务是⽤docker起的,不能更改默认端⼝了,所以我们映射的时候需要写
成“out_port:29418”.
这样运⾏docker之后,在客户端执⾏ssh gerrit -l {urname} ,则可以ssh到gerrit了:
5、克个隆
git clone ssh://gerrit/All-Projects, 因为ssh⾥的Host配的gerrit,所以在ssh://的后⾯,要写成gerrit,⽽系统给⽤户提供的是“git clone ssh://ddcdf266ab73:29418/All-Projects”,⼀开始我是⼀头雾⽔...
6、集成gitlab
这节是个重点,直接来⼲货:
gerrit本⾝是有代码仓库功能的,不够现在互联⽹⼤⼩公司⼀般都会⽤⼀些代码版本控制系统,⽐如,svn,git,更有gitlab来托管代码,所以有必要讲⼀讲集成应⽤这⼀块,这⾥⽤gitlab来实操⼀把。
重点:本地的ssh公钥需要配置在git和gerrit服务器上,gerrt服务器的ssh公钥需要配置在git服务器上!
先在gerrit上新建⼀个项⽬⽐如就叫gerritttest,创建⽅法很简单:
红框内写项⽬名,和gitlab⾥的项⽬对应。
此时,gitlab上也有⼀个“实体”的项⽬,也叫gerritttest,(也可以说是在gerrit⾥建gerritttest之前,gitlab就已经建好的)可以执⾏$git branch -av 来查看分⽀情况
在gerrit⾥创建同名仓库后,需要删掉仓库⽬录,然后执⾏‘git clone --bare git@:{urname}/gerritttest.git’然后可以执⾏$git clone "ssh://yourname@gerrit/gerritttest" && scp -p -P 8091 yourname@gerrit:hooks/commit-msg "gerritttest/.git/hooks/",来从gerrit克隆仓库了。
新手适合开什么车删除gerrit项⽬命令:ssh -p 8091 admin@ip delete-project delete --yes-really-delete gerritttest,这些命令都有对应的REST的API,可⾃⾏百度。
sudo docker exec -ti -u root ddcdf266ab73 bash  可获取docker的root权限
replication:⼀个⽤于⾃动同步gerrit仓库到gitlab的⼯具,可以执⾏ssh -p 8091 admin@ip gerrit plugin ls|grep replication 来查看插件情况,注:⽤户需要是admin,其他⽤户没有查看插件权限。ssh -p 8091 admin@ip gerrit plugin reload replication, 重启replication插件。
replication配置:
[remote "ample"]
projects = gerritttest《猫》>家庭主妇
url = ample:ur/${name}.git
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
push = +refs/changes/*:refs/changes/*
threads = 3
timeout = 30
replicationMaxRetries = 3
projects就是项⽬的名字,${name}会⾃动识别成“gerritttest”,timeout是推送的超时时长,replicationMaxRetries是⼀次push 重试的最⼤次数,如果重试次数打到配置值,则放弃该次push。
修改、提交、推送⼀套带⾛:
add和commit和以前操作git⼀样,push的时候⽤’git push -u origin HEAD:refs/for/master‘命令
此时的状态是将修改推倒了gerrit⾥的仓库,等待其他⼈codereview。
这时就可以在gerrit 的web页⾯⾥看到⼀个“change”,就可以进⾏codereview了,规则是所有组内的成员都可以review代码,并且评论,但是只有admin可以最终确认这份代码是否可以合并到git远程仓库,先点“code_review”,然后再点“submit”,submit表⽰真正提交并push到git仓库。
查看/var/gerrit/logs/replication_log
表⽰成功推送到git仓库
虫儿飞原唱是谁
查看git仓库
可以看到修改内容已经推送到了git服务器上

本文发布于:2023-06-08 14:06:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/903108.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:需要   仓库   代码   配置   公钥
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图