三十二張圖告訴你,Jenkins構建Spring Boot 有多簡單~

愛撒謊的男孩發表於2020-11-10

持續原創輸出,點選上方藍字關注我

目錄

  • 前言
  • 如何安裝Jenkins?
    • 環境準備
    • 開始安裝Jenkins
  • 初始化配置
    • 訪問首頁
    • 輸入管理員密碼
    • 安裝外掛
    • 建立管理員
    • 例項配置
    • 配置完成
  • 構建Spring Boot 專案
    • 配置JDK、maven、Git環境
    • 安裝外掛
    • 新增 SSH Server
    • 新增憑據
    • 新建Maven專案
    • 構建任務
  • 如何構建託管在GitLab的專案?
    • 安裝外掛
    • 新增GitLab API token
    • 配置GitLab外掛
    • 新建任務
    • 後續操作
  • 多模組專案如何構建?
  • 總結

前言

自動持續整合不知道大傢伙有沒有聽說過,有用過類似的工具嗎?

簡而言之,自動持續整合的工作主要是能對專案進行構建、自動化測試和釋出。

今天這篇文章就來講講常用的持續整合的工具Jenkins以及如何自動構建Spring Boot專案。

如何安裝Jenkins?

Jenkins是Java開發的一套工具,可以直接下載war包部署在Tomcat上,但是今天作者用最方便、最流行的Docker安裝。

環境準備

在開始安裝之前需要準備以下環境和工具:

  1. 一臺伺服器,當然沒有的話可以用自己的電腦,作者的伺服器型號是Ubuntu
  2. JDK環境安裝,作者的版本是1.8,至於如何安裝,網上很多教程。
  3. 準備maven環境,官網下載一個安裝包,放在指定的目錄下即可。
  4. Git環境安裝,網上教程很多。
  5. 程式碼託管平臺,比如GithubGitLab等。

開始安裝Jenkins

Docker安裝Jenkins非常方便,只要跟著作者的步驟一步步操作,一定能夠安裝成功。

Docker環境安裝

每個型號伺服器安裝的方式各不相同,讀者可以根據自己的型號安裝,網上教程很多。

拉取映象

我這裡安裝的版本是jenkins/jenkins:2.222.3-centos,可以去這裡獲取你需要的版本: https://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使用者的 uid1000

chown -R 1000:1000 /data/jenkins_home/

建立容器

除了需要掛載上面建立的/data/jenkins_home/以外,還需要掛載mavenjdk的根目錄。啟動命令如下:

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

以上命令解析如下:

  1. -d:後臺執行容器
  2. --name:指定容器啟動的名稱
  3. -p:指定對映的埠,這裡是將伺服器的8040埠對映到容器的8080以及50000對映到容器的50000注意: 804050000一定要是開放的且未被佔用,如果用的是雲伺服器,還需要在管理平臺開放對應的規則。
  4. -v:掛載本地的資料捲到docker容器中,注意: 需要將JDKmaven的所在的目錄掛載。

初始化配置

容器啟動成功,則需要配置Jenkins,安裝一些外掛、配置遠端推送等等。

訪問首頁

容器建立成功,訪問http://ip:8040,如果出現以下頁面表示安裝成功:

輸入管理員密碼

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

這裡要求輸入的是管理的密碼,提示是在/var/jenkins_home/secrets/initialAdminPassword,但是我們已經將/var/jenkins_home這個資料夾掛載到本地目錄了,因此只需要去掛載的目錄/data/jenkins_home/secrets/initialAdminPassword檔案中找。

輸入密碼,點選繼續。

安裝外掛

初始化安裝只需要安裝社群推薦的一些外掛即可,如下圖:

這裡選擇安裝推薦的外掛,然後 Jenkins 會自動開始安裝。

注意: 如果出現想外掛安裝很慢的問題,找到/data/jenkins_home/updates/default.json檔案,替換的內容如下:

  1. updates.jenkins-ci.org/download 替換為mirrors.tuna.tsinghua.edu.cn/jenkins
  2. 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 專案

在構建之前還需要配置一些開發環境,比如JDKMaven等環境。

配置JDK、maven、Git環境

Jenkins整合需要用到mavenJDKGit環境,下面介紹如何配置。

首先開啟系統管理->全域性工具配置,如下圖:

分別配置JDKGitMaven的路徑,根據你的實際路徑來填寫。

注意:這裡的JDKGitMaven環境一定要掛載到docker容器中,否則會出現以下提示:

 xxxx is not a directory on the Jenkins master (but perhaps it exists on some agents)

配置成功後,點選儲存。

安裝外掛

除了初始化配置中安裝的外掛外,還需要安裝如下幾個外掛:

  1. Maven Integration
  2. Publish Over SSH

開啟系統管理 -> 外掛管理,選擇可選外掛,勾選中 Maven IntegrationPublish 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 POMGoals and options,也就是你構建專案的命令。

Post Steps

選擇Run only if build succeeds,新增 Post 步驟,選擇 Send files or execute commands over SSH

上圖各個選項解析如下:

  1. name:選擇前面新增的SSH Server
  2. Source files:要推送的檔案
  3. Remove prefix:檔案路徑中要去掉的字首,
  4. Remote directory:要推送到目標伺服器上的哪個目錄下
  5. 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操作相同,不再贅述了。

多模組專案如何構建?

如果你的多模組不是通過私服倉庫依賴的,那麼在構建打包是有先後順序的,在新建任務的時候需要配置Buildmaven命令,如下圖:

上圖中的Goals and options中的命令就是構建api這個模組的命令,至於這個命令是什麼意思,前面有單獨一篇文章介紹過,請看一次打包引發的思考,原來maven還能這麼玩~

總結

本文詳細的介紹瞭如何從零安裝部署一個Jenkins,這下又能吹牛了,哈哈....

如果覺得不錯,點個贊不迷路~

相關文章