Jenkins:Barchart Jenkins Cascade 插件在发布构建期间抛出 JSchException

Jenkins: Barchart Jenkins Cascade Plugin throws JSchException during release build

我创建了一个示例项目结构来测试 Barchart Plugin

-layout-project pom.xml
   -parent-module pom.xml
   -main-module pom.xml
   -dependency-module pom.xml

布局和模块项目已从配置的 git 存储库中检出,成员和级联项目已从布局项目正确构建。但是当我触发发布构建时(在项目页面上选择 "Cascade Release" 操作并单击 "Submit"),它会抛出以下异常:

FATAL: org.eclipse.jgit.api.errors.TransportException: ssh://myusername@myhost/home/git/cascade-release.git: UnknownHostKey: myhost. RSA key fingerprint is 20:be:e9:3a:44:3d:cf:a8:24:00:e3:29:ab:7f:73:c5
com.jcraft.jsch.JSchException: UnknownHostKey: myhost. RSA key fingerprint is 20:be:e9:3a:44:3d:cf:a8:24:00:e3:29:ab:7f:73:c5
at com.jcraft.jsch.Session.checkHost(Session.java:805)
at com.jcraft.jsch.Session.connect(Session.java:345)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:117)

Caused: org.eclipse.jgit.errors.TransportException: ssh://myusername@myhost/home/git/cascade-release.git: UnknownHostKey: myhost. RSA key fingerprint is 20:be:e9:3a:44:3d:cf:a8:24:00:e3:29:ab:7f:73:c5
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:160)
at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:137)
at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:264)
at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:162)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1201)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:128)

Caused: org.eclipse.jgit.api.errors.TransportException: ssh://myusername@myhost/home/git/cascade-release.git: UnknownHostKey: myhost. RSA key fingerprint is 20:be:e9:3a:44:3d:cf:a8:24:00:e3:29:ab:7f:73:c5
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:135)
at com.barchart.jenkins.cascade.PluginScmGit.doFetch(PluginScmGit.java:153)

Caused: java.lang.RuntimeException
at com.barchart.jenkins.cascade.PluginScmGit.doFetch(PluginScmGit.java:155)
at com.barchart.jenkins.cascade.PluginScm.invoke(PluginScm.java:246)
at com.barchart.jenkins.cascade.PluginScm.invoke(PluginScm.java:221)
at hudson.FilePath.act(FilePath.java:997)
at hudson.FilePath.act(FilePath.java:975)
at com.barchart.jenkins.cascade.PluginScm.scmCheckout(PluginScm.java:310)
at com.barchart.jenkins.cascade.CascadeLogic.process(CascadeLogic.java:346)
at com.barchart.jenkins.cascade.CascadeBuild$CascadeExecution.run(CascadeBuild.java:41)
at hudson.model.Run.execute(Run.java:1724)
at com.barchart.jenkins.cascade.CascadeBuild.run(CascadeBuild.java:70)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)    

我检查了目录 <jenkins_home>/.ssh/ 中的 known_hosts 文件,它包含异常中提到的指纹。以用户 jenkins 身份从命令行上的 git 存储库检出也可以正常工作。通过 Maven Release Plugin 发布时也不会发生这种情况。所以我想这一定是一个特定于插件的问题。也许配置错误!?

以下是我在服务器端看到的

Mar  7 18:33:03 myhost sshd[29240]: 
error: Received disconnect from 192.168.0.9 port 46217:3: com.jcraft.jsch.JSchException: 
UnknownHostKey: myhost. RSA key fingerprint is 20:be:e9:3a:44:3d:cf:a8:24:00:e3:29:ab:7f:73:c5 [preauth]
Mar  7 18:33:03 myhost sshd[29240]: Disconnected from 192.168.0.9 port 46217 [preauth]

如有任何帮助,我们将不胜感激。

问题已解决,known_hosts 文件缺少远程主机 (myhost) 散列键与 git 用户 public 键的条目。通过将条目添加到文件中,我可以使用命令 ssh-keygen -l -E md5 -f .ssh/known_hosts 验证它现在包含预期的指纹。