Jenkins搭建與資料遷移實踐

王子發表於2023-02-08

概述

本文主要介紹內容如下:

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

 

相關文章