配置Sonar-Gerrit插件遇错:执行gerrit review命令失败
你遇到的核心问题其实是Jenkins运行进程的用户没有信任Gerrit服务器的主机密钥——虽然你手动在Jenkins服务器上执行mvn sonar:sonar成功,但那是用你当前登录的用户身份操作的,而Jenkins实际是用tomcat用户(从路径/usr/share/tomcat/.jenkins能判断出来)在运行,这个用户的SSH信任列表里并没有Gerrit服务器的主机密钥记录。
试试下面的步骤来修复:
切换到Jenkins运行的用户(这里是tomcat):
sudo su - tomcat手动发起一次到Gerrit服务器的SSH连接,让主机密钥自动添加到该用户的
known_hosts文件:ssh -p 29418 jenkins@172.21.33.193首次连接会弹出类似提示:
The authenticity of host '[172.21.33.193]:29418 ([172.21.33.193]:29418)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入yes确认后退出连接即可。重新触发你的Jenkins Maven任务,这时候Sonar-Gerrit插件执行
gerrit review命令时就不会再出现HostKey拒绝的错误了。
补充说明:你提到Gerrit Trigger插件连接检查成功,是因为这个插件依赖的是Jenkins全局配置里的Gerrit服务器密钥设置;而Sonar-Gerrit插件是直接调用本地SSH客户端执行操作,所以依赖的是Jenkins运行用户的SSH信任列表,这就是两者表现不一致的原因。
内容的提问来源于stack exchange,提问作者haopan

