概述
本文主要介紹內容如下:
1.使用Docker搭建Jenkins
2.遷移原Jenkins數據到新搭建的Jenkins中
3.在Jenkins容器內部配置Maven的私服配置
4.在Jenkins容器內部配置Nodejs
使用Docker搭建Jenkins
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中,如何操作呢?
Jenkins本身其實是提供了備份插件的,我們在Jenkins中安裝ThinBackup插件即可實現。
安裝成功後,可以在系統管理中找到插件的入口:
進入後頁面如下:
首先進入settings修改配置中的備份目錄爲/var/jenkins_home/bak
我們可以在宿主機的/home/jenkins_home目錄下創建bak目錄,用來存放備份文件。
其他配置建議如下,可自行調整:
配置保存後,回到插件頁面,點擊backup now,即可在宿主機的/home/jenkins_home/bak目錄中發現備份文件,
我們將此備份文件拷貝到另一個jenkins的備份目錄下,即可通過點擊restore進行恢復的操作。
恢復完成後,需要重新啓動jenkins容器。
在Jenkins容器內部配置Maven的私服配置
如果我們的項目中使用了maven私服,需要修改maven的setting.xml文件。
maven的安裝方式有以下兩種:
1.使用yum install maven一鍵安裝
2.去官網下載maven手動安裝,具體過程本文不介紹
無論選擇了哪種安裝方式,我們都可以通過mvn -v命令查找到maven的安裝目錄,在其中可以找到setting.xml文件,在其中配置私服即可。
在Jenkins容器內部配置Nodejs
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安裝完成。