天天看點

Jenkins deploys archive onto Nexus via SSL

今天終于搞定了一個很頭疼的問題:Jenkins(或者是它的slave)不能deploy那些build好的archive到Nexus庫中。

我們的結構是這樣的:

1、Jenkins master, serverA, windows7

2、Jenkins slave, serverB, windows7, started with JavaWebStart mode.

3、Nexus server, serverC. access only with SSL.

問題:

Jenkins的一個job可以正常編譯,而且能将編譯好的包安裝到本地的maven庫中。但是當Jenkins想把編譯好的包釋出到遠端Nexus庫(公司裡的公共maven庫)上時,出錯:peer not authenticated.

此類問題是證書出了毛病,由于Nexus啟用了SSL方式通路,是以,其要求所有與之連接配接的用戶端需要手動或自動的安裝Nexus伺服器self-signed certificate。

分析:

按常理說,maven沒有自帶java,是以maven的運作需要有java的JDK或JRE支援,需要我們事先在master或slave所在的機器上安裝JRE。而如果本地maven(不論是master的,還是slave的)需要和Nexus有互訪操作的話,就需要将Nexus的Certificate導入到maven所調用的JRE的keystore中(as a trusted certificate)。

這些步驟我已經全都做過了,可是還是會遇到peer not authenticated問題。

于是我又檢查了slave和master機器上所有的JRE,這是發現Jenkins master自身帶有一個JRE目錄,而這個JRE的keystore中還沒有添加Nexus的certificate。

也許這就是問題所在。

解決:

将Nexus的certificate添加到Jenkins master自帶的JRE的keystore中,重新開機Jenkins master服務,然後重試,slave部署archive成功。

繼續閱讀