Jenkins搭建與數據遷移實踐

概述

本文主要介紹內容如下:

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安裝完成。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章