2013-03-06 42 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