持續原創輸出,點選上方藍字關注我
目錄
前言 如何安裝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
,這下又能吹牛了,哈哈....
如果覺得不錯,點個贊不迷路~