三十二張圖告訴你,Jenkins構建Spring Boot 有多簡單~
- 2020 年 11 月 10 日
- 筆記
- JAVA, 碼猿技術專欄, springboot
持續原創輸出,點擊上方藍字關注我

目錄
前言 如何安裝Jenkins? 環境準備 開始安裝Jenkins
初始化配置 訪問首頁 輸入管理員密碼 安裝插件 創建管理員 實例配置 配置完成
構建Spring Boot 項目 配置JDK、maven、Git環境 安裝插件 添加 SSH Server 添加憑據 新建Maven項目 構建任務
如何構建託管在GitLab的項目? 安裝插件 添加GitLab API token 配置GitLab插件 新建任務 後續操作
多模組項目如何構建? 總結
前言
自動持續集成不知道大傢伙有沒有聽說過,有用過類似的工具嗎?
簡而言之,自動持續集成的工作主要是能對項目進行構建、自動化測試和發布。
今天這篇文章就來講講常用的持續集成的工具Jenkins以及如何自動構建Spring Boot項目。
如何安裝Jenkins?
Jenkins是Java開發的一套工具,可以直接下載war包部署在Tomcat上,但是今天作者用最方便、最流行的Docker安裝。
環境準備
在開始安裝之前需要準備以下環境和工具:
一台伺服器,當然沒有的話可以用自己的電腦,作者的伺服器型號是 Ubuntu。JDK環境安裝,作者的版本是1.8,至於如何安裝,網上很多教程。準備 maven環境,官網下載一個安裝包,放在指定的目錄下即可。Git環境安裝,網上教程很多。程式碼託管平台,比如 Github、GitLab等。
開始安裝Jenkins
Docker安裝Jenkins非常方便,只要跟著作者的步驟一步步操作,一定能夠安裝成功。
Docker環境安裝
每個型號伺服器安裝的方式各不相同,讀者可以根據自己的型號安裝,網上教程很多。
拉取鏡像
我這裡安裝的版本是jenkins/jenkins:2.222.3-centos,可以去這裡獲取你需要的版本: //hub.docker.com/_/jenkins?tab=tags。執行如下命令安裝:
docker pull jenkins/jenkins:2.222.3-centos
創建本地數據卷
在本地創建一個數據卷掛載docker容器中的數據卷,我創建的是/data/jenkins_home/,命令如下:
mkdir -p /data/jenkins_home/
需要修改下目錄許可權,因為當映射本地數據卷時,/data/jenkins_home/目錄的擁有者為root用戶,而容器中jenkins用戶的 uid 為 1000。
chown -R 1000:1000 /data/jenkins_home/
創建容器
除了需要掛載上面創建的/data/jenkins_home/以外,還需要掛載maven、jdk的根目錄。啟動命令如下:
docker run -d --name jenkins -p 8040:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home -v /usr/local/jdk:/usr/local/jdk -v /usr/local/maven:/usr/local/maven jenkins/jenkins:2.222.3-centos
以上命令解析如下:
-d:後台運行容器--name:指定容器啟動的名稱-p:指定映射的埠,這裡是將伺服器的8040埠映射到容器的8080以及50000映射到容器的50000。 「注意:」8040和50000一定要是開放的且未被佔用,如果用的是雲伺服器,還需要在管理平台開放對應的規則。-v:掛載本地的數據卷到docker容器中,「注意:」 需要將JDK和maven的所在的目錄掛載。
初始化配置
容器啟動成功,則需要配置Jenkins,安裝一些插件、配置遠程推送等等。
訪問首頁
容器創建成功,訪問//ip:8040,如果出現以下頁面表示安裝成功:

輸入管理員密碼
啟動成功,則會要求輸入密碼,如下圖:

這裡要求輸入的是管理的密碼,提示是在/var/jenkins_home/secrets/initialAdminPassword,但是我們已經將/var/jenkins_home這個文件夾掛載到本地目錄了,因此只需要去掛載的目錄/data/jenkins_home/secrets/initialAdminPassword文件中找。
輸入密碼,點擊繼續。
安裝插件
初始化安裝只需要安裝社區推薦的一些插件即可,如下圖:

這裡選擇安裝推薦的插件,然後 Jenkins 會自動開始安裝。
「注意:」 如果出現想插件安裝很慢的問題,找到/data/jenkins_home/updates/default.json文件,替換的內容如下:
將 updates.jenkins-ci.org/download替換為mirrors.tuna.tsinghua.edu.cn/jenkins將 www.google.com替換為www.baidu.com。
執行以下兩條命令:
sed -i 's/www.google.com/www.baidu.com/g' default.json
sed -i 's/updates.jenkins-ci.org\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json

全部安裝完成,繼續下一步。
創建管理員
隨便創建一個管理員,按要求填寫資訊,如下圖:

實例配置
配置自己的伺服器IP和埠,如下圖:

配置完成
按照以上步驟,配置完成後自動跳轉到如下介面:

構建Spring Boot 項目
在構建之前還需要配置一些開發環境,比如JDK,Maven等環境。
配置JDK、maven、Git環境
Jenkins集成需要用到maven、JDK、Git環境,下面介紹如何配置。
首先打開系統管理->全局工具配置,如下圖:

分別配置JDK,Git,Maven的路徑,根據你的實際路徑來填寫。
「注意」:這裡的JDK、Git、Maven環境一定要掛載到docker容器中,否則會出現以下提示:
xxxx is not a directory on the Jenkins master (but perhaps it exists on some agents)



配置成功後,點擊保存。
安裝插件
除了初始化配置中安裝的插件外,還需要安裝如下幾個插件:
Maven IntegrationPublish Over SSH
打開系統管理 -> 插件管理,選擇可選插件,勾選中 Maven Integration 和 Publish Over SSH,點擊直接安裝。

在安裝介面勾選上安裝完成後重啟 Jenkins。

添加 SSH Server
SSH Server 是用來連接部署伺服器的,用於在項目構建完成後將你的應用推送到伺服器中並執行相應的腳本。
打開 系統管理 -> 系統配置,找到 Publish Over SSH 部分,選擇新增

點擊 高級 展開配置

最終配置如下:

配置完成後可點擊 Test Configuration 測試連接,出現 success 則連接成功。
添加憑據
憑據 是用來從 Git 倉庫拉取程式碼的,打開 憑據 -> 系統 -> 全局憑據 -> 添加憑據

這裡配置的是Github,直接使用用戶名和密碼,如下圖:

創建成功,點擊保存。
新建Maven項目
以上配置完成後即可開始構建了,首先需要新建一個Maven項目,步驟如下。
創建任務
首頁點擊新建任務->構建一個maven項目,如下圖:

源碼管理
在源碼管理中,選擇Git,填寫倉庫地址,選擇之前添加的憑證。

構建環境
勾選 Add timestamps to the Console Output,程式碼構建的過程中會將日誌列印出來。

構建命令
在Build中,填寫 Root POM 和 Goals and options,也就是你構建項目的命令。

Post Steps
選擇Run only if build succeeds,添加 Post 步驟,選擇 Send files or execute commands over SSH。

上圖各個選項解析如下:
name:選擇前面添加的SSH ServerSource files:要推送的文件Remove prefix:文件路徑中要去掉的前綴,Remote directory:要推送到目標伺服器上的哪個目錄下Exec command:目標伺服器上要執行的腳本
Exec command指定了需要執行的腳本,如下:
# jdk環境,如果全局配置了,可以省略
export JAVA_HOME=/xx/xx/jdk
export JRE_HOME=/xx/xx/jdk/jre
export CLASSPATH=/xx/xx/jdk/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# jenkins編譯之後的jar包位置,在掛載docker的目錄下
JAR_PATH=/data/jenkins_home/workspace/test/target
# 自定義的jar包位置
DIR=/data/test
## jar包的名稱
JARFILE=swagger-demo-0.0.1-SNAPSHOT.jar
if [ ! -d $DIR/backup ];then
mkdir -p $DIR/backup
fi
ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9
if [ -f $DIR/backup/$JARFILE ]; then
rm -f $DIR/backup/$JARFILE
fi
mv $JAR_PATH/$JARFILE $DIR/backup/$JARFILE
java -jar $DIR/backup/$JARFILE > out.log &
if [ $? = 0 ];then
sleep 30
tail -n 50 out.log
fi
cd $DIR/backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf
以上腳本大致的意思就是將kill原有的進程,啟動新構建jar包。
腳本可以自己訂製,比如備份
Jar等操作。
構建任務
項目新建完成之後,一切都已準備就緒,點擊立即構建可以開始構建任務,控制台可以看到log輸出,如果構建失敗,在log中會輸出原因。

任務構建過程會執行腳本啟動項目。
如何構建託管在GitLab的項目?
上文介紹的例子是構建Github倉庫的項目,但是企業中一般都是私服的GitLab,那麼又該如何配置呢?
其實原理是一樣的,只是在構建任務的時候選擇的是GitLab的憑據,下面將詳細介紹。
安裝插件
在系統管理->插件管理->可選插件中搜索GitLab Plugin並安裝。
添加GitLab API token
首先打開 憑據 -> 系統 -> 全局憑據 -> 添加憑據,如下圖:

上圖中的API token如何獲取呢?
打開GitLab(例如公司內網的GitLab網站),點擊個人設置菜單下的setting,再點擊Account,複製Private token,如下:

上圖的Private token則是API token,填上即可。
配置GitLab插件
打開系統管理->系統配置->GitLab,如下圖:

配置成功後,點擊Test Connection,如果提示Success則配置成功。
新建任務
新建一個Maven任務,配置的步驟和上文相同,唯一區別則是配置Git倉庫地址的地方,如下圖:

倉庫地址和憑據需要填寫Gitlab相對應的。
後續操作
後續一些操作,比如構建項目,控制台輸出等操作,都是和GitHub操作相同,不再贅述了。
多模組項目如何構建?
如果你的多模組不是通過私服倉庫依賴的,那麼在構建打包是有先後順序的,在新建任務的時候需要配置Build的maven命令,如下圖:

上圖中的Goals and options中的命令就是構建api這個模組的命令,至於這個命令是什麼意思,前面有單獨一篇文章介紹過,請看一次打包引發的思考,原來maven還能這麼玩~。
總結
本文詳細的介紹了如何從零安裝部署一個Jenkins,這下又能吹牛了,哈哈....
如果覺得不錯,點個贊不迷路~

