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

目錄
-
前言 -
如何安裝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
,可以去這里獲取你需要的版本: 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
用戶的 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
,安裝一些插件、配置遠程推送等等。
訪問首頁
容器創建成功,訪問http://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 Integration
-
Publish 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 Server
-
Source 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
,這下又能吹牛了,哈哈....
如果覺得不錯,點個贊不迷路~
