- 說明如何在現有容器下升級Jenkins版本 (如果前一篇就有直接掛載jenkins.war,那這篇就不用看)
- 說明如何清除快取資料
如果舊的 jenkins-data
沒有清空,在這一行應該會複製舊資料進來 - jenkins-data:/var/jenkins_home。
這一行指令的用途主要就是建立一個數據卷,可以讓Jenkins的相關數據與配置,保存在這個數據卷中,之後重新創建容器時,可以直接複製進去。
但發現我本來其實有四個項目,卻只有出現兩個項目,發現跟pipeline相關的都沒有顯示出來
到Jenkins容器中的jobs中確認,其實是有複製成功為四個項目的資料的
到管理Jenkins 的介面中就發現有很多插件都沒有複製成功,其中包含pipeline
在Jenkins重新下載Git插件,發現一直下載失敗,接著到Jenkins Git插件說明頁面一看才知道是版本問題。
有特別註明Jenkins版本至少要2.387.3以上,但是使用image jenkinsci/blueocean下載下來的版本只有2.346.3,因為image目前沒有再發布更新的版本,所以這邊需要單獨更新Jenkins的版本。
Jenkins 登入頁面後,右下角可以瀏覽Jenkins的版本
進到Jenkins容器中使用以下指令,可以知道Jenkins啟動的方式是使用Jenkins.war,以及其存放在容器內的路徑位置。
ps -ef|grep java
接著我們從Jenkins官方下載新版本的.war檔
先複製容器內的jenkins.war,並且更名為 jenkins.war-bak
mv jenkins.war jenkins.war-bak
再把下載下來的war檔案,複製進去Jenkins容器內部。確認複製進去後,重啟服務
docker cp /Users/lulu/Desktop/jenkins.war api-jenkins-1:/usr/share/jenkins
重新登入後就會看到版本已經變成最新的2.414.2啦!!!
上方那些所有紅色的版本提示,幾乎都不見了!
⇒ 接著進到插件管理,會看到有很多可以update的項目,全部一起update,重啟服務。
這邊會有版本衝突問題主要是,本來是使用image jenkins/jenkins:lts
啟動容器並下載插件,現在因為轉換為**jenkinsci/blueocean,但其中的 jenkins版本不同,但原先的插件是會一起複製到容器內的,所以還是會顯示有版本不相容的提醒,如果真的很不喜歡提示,有以下兩種方式
錯誤項目:hudson.plugins.git.GitException: Command "git config remote.origin.url
本來一直以為是權限問題,但後來發現是快取暫存資料的問題。
找到工作目錄→ 刪除工作目錄
重新執行就沒有再遇到這個問題了。
在啟動新的Jenkins Container之前,先把 jenkins-data
數據卷的資料清空,再創建新的Jenkins Container。
docker volume rm jenkins-data
docker volume create jenkins-data
就可以直接透過這個自己構建的image啟動容器。
詳情可以參考官方:Customize the official Jenkins Docker image, by executing the following two steps
FROM jenkins/jenkins:2.414.2-jdk17
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"