单独使用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
- 通过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.
解决方式如下:
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角色
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
此处配置实属不易,记住就行了。
ssh keyfile password 为空,不填。
SSH Keyfile的路径写jenkins上id_rsa所在路径
SSH Keyfile Password是你的**的密码,如果没有密码就留空,一般没有
8、点击保存
9、Gerrit Triggle重启保证状态正常
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安装流程全部再走一遍,前面的全部默认,无须修改,若遇到清楚缓存的,选择否即可。
当 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上传→安装完毕把所有模块开启
6、安装完插件,会多出一个Gerrit Settings的菜单,点击进入设置
7、
推送含有Jira问题关键字的提交
在commit-msg中填写Jira问题编号即可。