Gerrit可以实现在线代码Review的功能,与GitLab的merge request功能相当。目前想在Gerrit的基础上增加静态代码扫描的功能,以进一步提升代码质量。网上搜到的技术方案是:Gerrit + Jenkins + Gerrit Trigger。一句话概括就是:

1.在Jenkins上创建一个代码检查的工程,通过pom文件方式配置好第三方的静态代码扫描工具;
2.Jenkins通过Gerrit Trigger插件来侦听Gerrit一侧的代码变动,进而自动触发代码检查工程的构建和执行;
3.检查结果Jenkins以Reviewer的身份反馈给Gerrit。

详细见:Jenkins代码审查功能的实现方案

在Jenkins上配置Gerrit Trigger的过程中,”Username” 和 “SSH Keyfile”两项填写时总不得解。从官网上也没得到启示。参考了Stack OverFlow的解决办法

这里我给出终极答案:
1.”Username”,要填的是在gerrit应用中注册过的一个账号,比如我个人的gerrit账号是:changwenna001;
2.对于”SSH Keyfile”一项,
2.1 首先要确保目录真实存在;
默认安装完jenkins时,存在目录”/var/lib/jenkins”,但是不存在.ssh子目录,这需要手动创建(命令mkdir);
然后通过ssh-keygen命令生成私钥公钥;
2.2 将公钥内容粘贴到Gerrit的个人账号changwenna001里的SSH Public Keys里;
具体操作是通过vim命令打开id-rsa.pub,复制后,访问gerrit的web服务,settings->
SSH Public Keys->粘贴,Add。
2.3 在”SSH Keyfile”一项里填写“/var/lib/jenkins/.ssh/id_rsa”,如果提示文件不存在,则进行如下操作:
a.修改id_rsa俩文件的访问权限,确保公私钥对Linux环境里其他用户也是可读的,通过命令chmod来操作,例如:

[root@vm ~]# chmod 777 /var/lib/jenkins/.ssh
[root@vm ~]# cd /var/lib/jenkins/.ssh
[root@vm .ssh]# chmod 777 id_rsa*

我这里,给出了最高权限777。
再次尝试,如果jenkins还提示文件不存在,则第二招:
b.尝试修改id_rsa俩文件的用户归属。使用的命令是chown。

[root@vm ~]# cd /var/lib/jenkins/.ssh
[root@vm .ssh]# ll
total 8
-rwxrwxrwx 1 root root 1675 Jul 13 15:45 id_rsa
-rwxrwxrwx 1 root root  389 Jul 13 15:45 id_rsa.pub
[root@vm .ssh]# chown jenkins:jenkins id_rsa*
[root@vm .ssh]# ll
total 8
-rwxrwxrwx 1 jenkins jenkins 1675 Jul 13 15:45 id_rsa
-rwxrwxrwx 1 jenkins jenkins  389 Jul 13 15:45 id_rsa.pub

上述操作之后,就应该能解决”/var/lib/jenkins/.ssh/id_rsa” does not exist.的问题了。

附上ssh key的生成命令:

[root@vm .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa.
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:RHnJYOv3HfjDxC6YbH+UQHbpe6H4UFdDSJF+U1+ajJw root@vm
The key's randomart image is:
+---[RSA 2048]----+
|        ++ ..o=o |
|       o..+ ooo.+|
|        o. +.* o*|
|       o    E===.|
|        S . +.Boo|
|         o * B+..|
|          = =.*. |
|         . . o.. |
|            ..   |
+----[SHA256]-----+
[root@vm .ssh]# cd /var/lib/jenkins/.ssh
[root@vm .ssh]# ll
total 8
-rwxrwxrwx 1 root root 1675 Jul 13 15:45 id_rsa
-rwxrwxrwx 1 root root  389 Jul 13 15:45 id_rsa.pub
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐