本文主要介紹內容如下:
1.使用Docker搭建Jenkins
2.遷移原Jenkins資料到新搭建的Jenkins中
3.在Jenkins容器內部設定Maven的私服設定
4.在Jenkins容器內部設定Nodejs
Jenkins的最新版本已經全面支援jdk11,由於專案原因我們還是jdk8的釘子戶,所以本次安裝的Jenkins版本我們選擇支援jdk8的最新版本。
拉取映象與執行容器的命令如下:
docker pull jenkins/jenkins:lts-centos7-jdk8 docker run -d --name jenkins -u root -p 8081:8080 -p 50000:50000 --restart=always -v /home/jenkins_home/:/var/jenkins_home -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime:ro jenkins/jenkins:lts-centos7-jdk8
目錄對映中/home/jenkins_home/目錄中的內容會在容器第一次啟動時自動生成,它對映的是Jenkins的工作目錄。
/usr/bin/docker與/var/run/docker.sock的對映可以讓容器使用宿主機的docker命令,用來協助構建操作。
執行後,在瀏覽器中通過ip:8081即可存取Jenkins工作臺,首次進入工作臺需要輸入管理員的初始密碼,
初始密碼我們可以在宿主機的/home/jenkins_home/secrets/initialAdminPassword檔案中獲得。
輸入密碼後,如果順利的話,會進入外掛安裝頁面,我們選擇安裝推薦的外掛等待安裝完成即可。
但是你有可能遇到下面的情況:
如何解決呢?
首先確認一下你的伺服器本身是肯定有網的,而且伺服器的防火牆是開啟的狀態。
防火牆是否開啟可以用以下命令觀察:
firewall-cmd --state
如果以上條件成立,我們可以執行一下下邊的命令
#開啟 NAT 轉發 firewall-cmd --permanent --zone=public --add-masquerade #檢查是否允許 NAT 轉發 firewall-cmd --query-masquerade
firewall-cmd --reload
之後再重新啟動你的Jenkins容器,再次觀察是否已經解決了問題。
如果還沒有解決問題,就需要你自己來尋找原因了。
那為什麼執行這樣的命令後,就可以讓容器可以連線網路了呢?這就要說到docker的網路模式了。
我們執行jenkins容器時沒有指定容器的網路,所以容器會以預設的bridge模式啟動,bridge模式我們可以把它類比成Vmvare虛擬的nat網路模式,到這裡你應該就明白了,firewall防火牆在開啟的時候,如果不開啟nat轉發,容器內部當然就無法藉助nat的手段連線網路了。
當然,如果你的伺服器不需要防火牆,完全可以關閉防火牆來解決問題,不過關閉防火牆之後,需要重新啟動docker服務後,docker才可以正常執行,命令如下:
systemctl stop firewalld.service #停止firewall
systemctl restart docker #重啟docker
或者還有一種解決方式,就是在docker run命令的後邊加上--net=host引數,來指定docker的網路模式為host模式,使用host網路模式後,不再需要埠對映,且無法實現埠對映,所以容器出現埠衝突的情況。
至此,我們的Jenkins就搭建完成了。
現在我們假設你原理就已經擁有了一個Jenkins,並且已經執行了很久,想要把執行的資料備份和恢復到我們新部署的Jenkins中,如何操作呢?
Jenkins本身其實是提供了備份外掛的,我們在Jenkins中安裝ThinBackup外掛即可實現。
安裝成功後,可以在系統管理中找到外掛的入口:
進入後頁面如下:
首先進入settings修改設定中的備份目錄為/var/jenkins_home/bak
我們可以在宿主機的/home/jenkins_home目錄下建立bak目錄,用來存放備份檔案。
其他設定建議如下,可自行調整:
設定儲存後,回到外掛頁面,點選backup now,即可在宿主機的/home/jenkins_home/bak目錄中發現備份檔案,
我們將此備份檔案拷貝到另一個jenkins的備份目錄下,即可通過點選restore進行恢復的操作。
恢復完成後,需要重新啟動jenkins容器。
如果我們的專案中使用了maven私服,需要修改maven的setting.xml檔案。
maven的安裝方式有以下兩種:
1.使用yum install maven一鍵安裝
2.去官網下載maven手動安裝,具體過程本文不介紹
無論選擇了哪種安裝方式,我們都可以通過mvn -v命令查詢到maven的安裝目錄,在其中可以找到setting.xml檔案,在其中設定私服即可。
nodejs的安裝其實在容器內部和外部是沒有區別的
到官網https://nodejs.org/en/download/releases/下載指定的版本即可,這裡由於專案原因,我們選擇了Node.js 14.21.2版本
下載node-v14.21.2-linux-x64.tar.gz,複製到宿主機的/home/jenkins_home/node/中。
進入容器內部,解壓後,執行如下命令,建立軟連線
ln -s /var/jenkins_home/node/node-v14.21.2-linux-x64/bin/node /usr/bin ln -s /var/jenkins_home/node/node-v14.21.2-linux-x64/bin/npm /usr/bin ln -s /var/jenkins_home/node/node-v14.21.2-linux-x64/bin/npx /usr/bin ln -s /var/jenkins_home/node/node-v14.21.2-linux-x64/bin/corepack /usr/bin
即可完成node的安裝,
如果需要使用yarn命令和pnpm命令,可以執行corepack enable命令來開啟。
至此,nodejs安裝完成。