2013-03-06 43 views
1

我们正在使用CloudBees Jenkins运行Maven作业,并且在尝试将Javadoc部署到我们的专用Javadoc服务器时构建失败。 这是在日志中的错误:Maven Build无法部署到Javadoc服务器:缺少SSH known_hosts

The authenticity of host 'javadoc.foo.com' can't be established. 
RSA key fingerprint is 3e:69:41:8a:ec:d1:4c:d9:75:ef:7d:71:b7:7d:51:d0. 
Are you sure you want to continue connecting? (yes/no): 
The authenticity of host 'javadoc.foo.com' can't be established. 

我想修改m1.large和的m1.small节点上known_hosts文件,但我不知道怎么办。

想一想,我应该有一个预先构建的步骤,即时修改known_hosts文件吗?或者,也许在/private目录中复制预建的known_hosts文件?

很抱歉,如果这是一个新手的问​​题,但我是新来的这整个“动态创建的构建机器” ......

+0

请纠正我,如果我错了,我知道通过使用自签名证书到您的私人服务器的连接是HTTPS。您可以考虑将服务器证书注入Jenkins/Java cacerts。 – 2013-03-07 03:57:52

+0

@CharleeChitsuk:从从机到私有javadoc服务器的连接是通过scp。下面是pom.xml中的片段:' 网站主机 SCP://javadoc.foo.com/var/www/javadoc/$ {project.artifactId}/$ {项目.version} ' – grayaii 2013-03-07 15:32:31

回答

2

最安全的方法是预先配置已知主机与你期望的值 - 追加适用于您要连接的服务器的适当行。

# Run this manually: 
ssh -o UserKnownHostsFile=foo javadoc.foo.com 

# Take that file and put it in your private DAV share, and then 
ssh -o UserKnownHostsFile=/private/<account>/known_hosts javadoc.foo.com 
+0

我无法手动运行它。在cloudbees中,slave/build机器是即时创建的,我不认为我可以修改构建机器的“基础”映像(我可能在这方面是错误的)。 – grayaii 2013-03-07 15:37:17

+0

呃,你是对的。我读得太快了。这基本上是正确的做法。我最终将它保存在/ private/foo /目录中(所有的奴隶都可以访问),然后当我使用它时,就像你提到的那样。谢谢! – grayaii 2013-03-07 21:28:44

0

本W的答案相当不错。或者,我会确保我可以通过控制台从该机器登录到任何地方,以便ssh客户端可以自行存储设置。

+0

我无法通过控制台登录。机器在作业开始时被创建,并在作业完成时被破坏。所以,即使我设法修改了构建机器上的known_hosts文件,在jenkins作业完成后,它只会被吹走。状态不被保留。现在,我怀疑我必须在某处保存一个“黄金”known_hosts文件,并且在构建开始时使用“golden”文件而不是〜/ .ssh /中的文件。 – grayaii 2013-03-07 16:45:18

+1

是的 - 主目录在每个版本上都被删除了 - “黄金文件非常方便,因为它确保了信任关系 - 比远程主机检查更好地说”是“更好。有点像SSL没有CA的痛苦。 – 2013-03-08 00:26:51