安装gerrit记录 -ubuntu

单独使用nginx 做反向代理,与apache2无关

参考地址:https://www.tuicool.com/articles/iAFBvu7

在41上启动gerrit服务:

1、先root用户启动 nginx nginx

2、启动gerrit

cd /home/gerrit/gerrit_site/bin

./gerrit.sh start

gerrit新建项目命令:ssh-gerrit gerrit create-project test-project1

-gerrit对接gitweb-

1.需要先搭建gitweb,然后进行相关配置

[[email protected] ~]# yum install -y gitweb 【或者直接yum install -y git*】

gitweb安装后的目录路径是/var/www/git

  1. 通过git config配置一下

[[email protected] ~]# git config --file /home/gerrit/gerrit_site/etc/gerrit.config gitweb.type gitweb
[[email protected] ~]#git config --file /home/gerrit/gerrit_site/etc/gerrit.config gitweb.cgi /var/www/git/gitweb.cgi
[[email protected] ~]#git config --file /home/gerrit/gerrit_site/etc/gerrit.config --unset gitweb.url
3.重启gerrit,然后登陆gerrit后,gitweb超链接效果就有了

gerrit新增账号后,需要使用该账号登陆一下,该账号才可以使用。

为加深对gerrit的理解,学习了https://www.jianshu.com/p/764e42f77afe

新增加用户 dev1、dev2、verify1、verify2、review1、review2六个用户,密码和用户相同。

新增加组 dev 、verify、review,按名称添加用户

步骤:

1、新增一个项目,使用dev1用户 clone 下来。克隆时用它给的第一个命令就行。

git clone “ssh://[email protected]:29418/test-project2” && scp -p -P 29418 [email protected]:hooks/commit-msg “test-project2/.git/hooks/”

2、在项目内新增文件,add、commit 然后push

push可能会报错。

例如:remote: ERROR: committer email address remote: ERROR: does not match your user account.

解决方式如下:
安装gerrit记录 -ubuntu

2、增加权限,verify组有verify权限,review组有review权限。

修改权限这一块,还不完全明白,修改Reference: refs/heads/和refs/for/。待确定

3、先用review1用户review,再用verify1用户verify。最后merge成功。

gerrit权限相关的文档:

https://blog.csdn.net/chenjh213/article/details/50571190
http://192.168.1.43:8081/#/VE/TbYlAF9x8HQ54/UXr8tP1+VRdzcKWu5/N8JTPQ==$MTAwMDAwMjpsaXVjYW5jYW4wNzI4QDIxY24uY29t

Jenkins触发gerrit编译
前提条件:

jenkins 环境已搭好。

gerrit 环境已搭好。

jenkins地址:http://192.168.1.54:8686/jenkins 部署在tomcat上的

gerrit地址:http://192.168.1.41:8080/ 搭建实属不易。后期会记录下详细过程

步骤:

1、给gerrit服务器新建用户,用户名:jenkins。

在gerrit服务器上192.168.1.41 目录/home/gerrit/下执行如下命令:

htpasswd -m /home/gerrit/htpasswd.conf jenkins 密码也是jenkins 此处切记用-m 不要用 -c -c 会吧原账户密码覆盖。

2、在jenkins服务器上生成sshkey

ssh-****** -C [email protected]

4、 用jenkins用户登录Gerrit服务器,更新SSH公钥
cat /home/jenkins/.ssh/id_rsa.pub

5、接下来,就是设置jenkins为 Non-interactive角色
安装gerrit记录 -ubuntu

6、jenkins安装 gerrit triggle插件

系统管理-插件管理,可选插件 ,选择Gerrit Trigger ,安装。

选择不重启返回,(好像是这个名字,忘记了,已添加成功,无法截图了)

在系统管理里面就可以看见gerrit triggle.

7、主页面->Manage Jenkins->Gerrit Trigger->Add New Server
Add New Server:Check4Gerrit
勾选Gerrit Server With Default Configurations
安装gerrit记录 -ubuntu
此处配置实属不易,记住就行了。

ssh keyfile password 为空,不填。

SSH Keyfile的路径写jenkins上id_rsa所在路径
SSH Keyfile Password是你的**的密码,如果没有密码就留空,一般没有

8、点击保存

9、Gerrit Triggle重启保证状态正常
安装gerrit记录 -ubuntu
pip install readline一直报失败 /usr/bin/ld: cannot find -lncurses…

pip install readline

解决办法:先安装libncurses-dev

sudo apt-get install libncurses-dev

then

pip2 install readline

此处用pip2 的原因:

使用pip有时会报错,因为我本地有python2 python3

两个版本

遇到一个奇葩问题,gerrit 启动一直报失败。

用root 修改了配置文件gerrit.config后

再重启启动gerrit时,报失败了

原因是gerrit.config 文件的文件拥有者变了,应重新修改回 gerrit用户。命令:

chown gerrit:gerrit gerrit.config

Gerrit 上分支操作记录(创建分支,删除分支)
参考文档:https://www.cnblogs.com/kevingrace/p/5688724.html

问题解决方案集锦
检查 默认的29418端口能否正常工作:

nc 192.168.1.41 29418

出现如下提示,表示正常:SSH-2.0-GerritCodeReview_2.11.4-11-ga14450f (SSHD-CORE-0.14.0)

check你的publickey是否能正常工作

ssh -p 29418 192.168.1.41 gerrit version

出现如下提示,表示正常:gerrit version 2.11.4-11-ga14450f

git push origin HEAD:refs/for/master

git review 这两句命令应该一样的意思

git push origin master:refs/for/master 执行时报失败,解决办法:

报错原因:it push 报错:missing Change-Id in commit message footer

解决办法,百试不爽。 https://www.cnblogs.com/zndxall/p/9603834.html

如果执行还是报错,需要更新git版本。

此地址记载了一些git报错的解决办法。

https://blog.csdn.net/a10703060237/article/details/89704924

git review报错解决办法:

1、We don’t know where your gerrit is. Please manually create

a remote named “gerrit” and try again.

确认.gitreview 配置对,配置的是正确的gerrit的环境。

2、Problems encountered installing commit-msg hook

The following command failed with exit code 1

执行 scp -p -P 29418 [email protected]:hooks/commit-msg “test-project1/.git/hooks/”

3、Errors running git rebase -i remotes/gerrit/master

不能变基:您有未暂存的变更。
请提交或为它们保存进度。

使用git status 查看是否有未提交的变更。

git commit 报错:

git: ‘interpret-trailers’ is not a git command. See ‘git --help’.
cannot insert change-id line in .git/COMMIT_EDITMSG

解决办法:https://blog.csdn.net/a10703060237/article/details/89704924

git版本太老,需更新。

在jenkins上创建的项目中报错:

Failed to connect to repository : Command “git ls-remote -h http://192.168.1.41:8080/test-project1 HEAD” returned status code 128:
stdout:
stderr: fatal: Unable to find remote helper for ‘http’

原因:缺少git插件。

按照https://blog.csdn.net/a10703060237/article/details/89704924 的方法重新安装git 。使用root账户,配置好环境变量。

1、如遇到git review 成功,但并没有代码到gerrit上,git review 只输出两行内容。

解决办法:更新 git-review 版本

命令: pip install git-review==1.28

2、git版本号太低,也有可能推送不成功。

3、手动replication gerrit上代码到 gitlab 上,失败,报reason: pre-receive hook declined

因为gitlab上做了代码更新,gerrit上也有代码更新,导致同步不过去

解决办法:

删除gerrit服务器上/git目录下项目,重新克隆。

gerrit jira intergration
前提条件:
gerrit 、jira 安装成功,已创建好账号。
参考文档:

1、下载gerrit插件 its-base 、its-jira
(jar包网上都有现成的,不要妄想用编译软件去生成,太复杂了。)

包下载地址:https://link.zhihu.com/?target=https%3A//gerrit-ci.gerritforge.com/job/plugin-its-jira-bazel-stable-2.15/

2、jar包下载下来后,放在plugins文件下。

3、集成:
执行 java -jar gerrit.war init -d review_site
执行这个命令,会 将gerrit安装流程全部再走一遍,前面的全部默认,无须修改,若遇到清楚缓存的,选择否即可。
安装gerrit记录 -ubuntu

安装gerrit记录 -ubuntu
当 test connectivity to http://… [y/N]?输入y
因为输入N 很可能会报错,报错原因是获取接口失败,返回401 null。这个问题是它本身接口调用的不对,不知道怎么回事。不影响后面使用。

4、配置规则,触发既然上issues状态的改变
配置$GERRIT_SITE/etc/its/actions.config 。若没有此文件,创建即可。
[rule “open”]
event-type = patchset-created
action = add-standard-comment (在jira中添加评论,还可以自定义)
action = In Progress (这里是jira状态变更的动作名,必须和jira一致,若是汉化,这里必须写“处理中”)
[rule “resolve”]
verified = +1
approval-Code-Review = +2
action = Resolve Issue
[rule “close”]
event-type = change-merged
action = Close Issue
[rule “stop”]
event-type = change-abandoned
action = Stop progress

我配置的是这个:(但解决问题那快,一直不能触发。)
[rule “open”]
event-type = patchset-created
action = “开始进行”
action = add-standard-comment
[rule “resolve”]
event-type = comment-added
approval-Verified = 1
approval-Code-Review = 2
action = “解决问题”
action = add-standard-comment
[rule “merged”]
event-type = change-merged
action = “关闭问题”
action = add-standard-comment
[rule “abandoned”]
event-type = change-abandoned
action = Stop Progress
action = add-standard-comment
[rule “LOG”]
action = log-event info

5、Jira安装gerrit-plugin-3.0.jar插件
以管理员身份进入Jira->点击设置下拉框->Add-ons(插件)->Manager add-ons(管理插件)->点击Upload add-on(上传插件)->选择gerrit-plugin-3.0.jar上传→安装完毕把所有模块开启
安装gerrit记录 -ubuntu
安装gerrit记录 -ubuntu

6、安装完插件,会多出一个Gerrit Settings的菜单,点击进入设置

安装gerrit记录 -ubuntu

7、
推送含有Jira问题关键字的提交
在commit-msg中填写Jira问题编号即可。