在通過Docker 鏡像安裝Jenkins的情況下,每次都會碰到在Jenkins插件無法安裝的情況,導致所有的插件安裝失敗。
通過 Docker logs 容器名
來查看實際運行的日誌。例如,docker logs myjenkins -f
來時實的輸出myjenkins容器的日誌, 提示如下:
Caused: java.io.IOException: Failed to load http://updates.jenkins-ci.org/download/plugins/antisamy-markup-formatter/1.6/antisamy-markup-formatter.hpi to /var/jenkins_home/plugins/antisamy-markup-formatter.jpi.tmp
at hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:1217)
Caused: java.io.IOException: Failed to download from http://updates.jenkins-ci.org/download/plugins/antisamy-markup-formatter/1.6/antisamy-markup-formatter.hpi (redirected to: http://mirrors.jenkins-ci.org/plugins/antisamy-markup-formatter/1.6/antisamy-markup-formatter.hpi)
意思就是,docker 容器無法從 http://updates.jenkins-ci.org/download/plugins/
鏈接處下載Jenkin 插件。
通過Jenkins 的 Github 可以看到(鏈接 jenkinsci/docker) ,官方提供了設置來讓我們設置插件中心。
對於Jenkin插件中心設置,主要相關的幾個Docker容器環境變量說明如下:
JENKINS_UC
:主要的插件更新中心,會提供Jenkin 長期支持的版本。默認值就是 https://updates.jenkins.io.JENKINS_UC_EXPERIMENTAL
:主要的插件開發/實驗版本更新中心。JENKINS_UC_DOWNLOAD
:從插件更新中心的下載鏈接,默認爲$JENKINS_UC/downloads
。
方案一:所以,很多用戶,爲了解決這個問題,會自己重新打一個Jenkins Images,然後覆蓋這個 JENKINS_UC_DOWNLOAD
參數,或者在啓動容器的時候, 重載這個 JENKINS_UC_DOWNLOAD
參數。
本人未試過,但是此法應該是可行的。(主要是懶不想這麼做,因爲大部分的安裝都已經做完了,不想重新來一遍,所以主要試瞭如下的方案)
方案二:以root的用戶進入容器,然後更新鏡像源。等待更新完成,通常能夠解決網絡Jenkins插件中心網絡不可達的問題。
docker exec -it -u root myjenkins bash
apt-get update
方案三: (推薦)在插件安裝界面先繼續,註冊完Admin賬戶後登錄,在 jenkins --> Manage Jenkins --> Manage Plugins --> Advanced
的選項中選中更新Update Site。 將更新源重 https://updates.jenkins-ci.org/update-center.json 替換成 http://mirror.esuni.jp/jenkins/updates/update-center.json。注意替換後的沒有(https)。
上面方法嘗試完之後,可以在 Jenkins -> Update Center
看到如下成功的界面:
雖然還是會有些許插件無法正常更新,但是已經無妨了。
參考文檔: