Gerrit触发jenkins构建job后,不能给review的代码Verified+1
问题描述:使用Gitlab+Gerrit+Jenkins搭建CI环境,在完成各项配置以后,在Gerrit和Jenkins对接的时候出现问题,在develper提交代码Review后,能够触发Jenkins build job,但是jenkins build成功以后,Gerrit上始终不能给代码Verified+1.各个组件版本如下:gerrit2.12.2 + jenkins2.176.3 ...
·
问题描述:
使用Gitlab+Gerrit+Jenkins搭建CI环境,在完成各项配置以后,在Gerrit和Jenkins对接的时候出现问题,在develper提交代码Review后,能够触发Jenkins build job,但是jenkins build成功以后,Gerrit上始终不能给代码Verified+1.
各个组件版本如下:
gerrit2.12.2 + jenkins2.176.3 + gerrit trigger 2.30.5
问题截图:
搭建步骤参考:
https://www.cnblogs.com/kevingrace/p/5651447.html
说点题外话:步骤非常详尽,基本可以照着走。美中不足的一点是搭建环境没有描述,用户创建更清楚一点。因为Gitlab/Gerrit/Jenkins本身既有web界面的用户,又有服务器上同名的用户,不写清楚,有的步骤就弄晕了。但是确实是网上看到最全的一个。
问题解决:
网上查找了各种资料,实在是没办法从配置上解决这个问题。只好抛弃了配置方式,使用脚本的方式,达到了预期目的。
- 在Jenkins job中放弃了使用Git来下载源代码,因为即使配置了,也不能在当前工作区下载最新的源码。
- 构建触发器仍然选择Gerrit event。
- Gerrit trigger配置不变。
4.关键在构建脚本这里
```bash
#!/bin/bash
cd ${WORKSPACE}
rm -rf *
git init
#pull codes from gerrit
git pull ssh://jenkins@192.168.xxx.xx:29418/$GERRIT_PROJECT $GERRIT_REFSPEC
#do some test
if [ "x$?" == "x0" ] ; then #成功则Verified +1
ssh -x -p 29418 jenkins@192.168.xxx.xx gerrit review --project $GERRIT_PROJECT --verified 1 $GERRIT_PATCHSET_REVISION
else
ssh -x -p 29418 jenkins@192.168.xxx.xx gerrit review --project $GERRIT_PROJECT --verified -1 $GERRIT_PATCHSET_REVISION
#ssh -x -p $gerrit_port $user@$gerrit_addr gerrit review --project $GERRIT_PROJECT --code-review -2 $GERRIT_PATCHSET_REVISION
fi
解释:
$GERRIT_PROJECT
$GERRIT_REFSPEC
$GERRIT_PATCHSET_REVISION
这三个参数都是gerrit trigger plugin自带参数,$GERRIT_REFSPEC 指向最新提交的代码。
我这里只需要jenkins能够给通过build的代码加上Verfied +1 即可。
jenkins用户既是jenkins服务器linux用户(使用该用户启动jenkins服务),又是gerrit 的一个用户(配置在gerrit.config同目录下的用户配置问件passwords中)。jenkins用户的id_rsa.pub要配置到gerrit 用户的ssh中。
这种配置才能保证jenkins能够执行git pull命令下载代码到workspace中,又能保证jekins gerrit用户能够给review的代码打上Verified分。
更多推荐
已为社区贡献3条内容
所有评论(0)