Jenkins之路(二):使用Jenkins自動部署SpringBoot項目(svn篇)

前言

Jenkins的整體流程可以參考下圖
在這裏插入圖片描述
整體流程:

開發人員將工作區的代碼提交到代碼庫(svn或者git),代碼庫再調用鉤子程序通知Jenkins(我已經更新了代碼,你也要重新部署一版了),鉤子程序是我們自己編寫,這個鉤子程序很容易後續會提到怎麼編寫鉤子程序
Jenkins收到代碼庫的提醒之後立馬去代碼庫裏獲取最新的源碼,再通過調用maven插件將源碼打包成jar,再通過Publish over SSH插件將jar包傳到一臺或者多臺服務器上,再調用服務器的腳本啓動jar包,這就是Jenkins工作的整體流程。

上圖僅作參考,圖中流程爲部署ssm項目流程,因此與部署springboot項目有些不同。springboot項目打包成jar包爲不是war包了,使用的也不是Deploy to web container插件部署了,而是Publish over SSH

準備工作

1.需要在linux服務器中安裝JDK參考文章:centos7下安裝JDK

2.需要在linux服務器中安裝Maven參考文章:centos7下安裝Maven

3.需要在linux服務器中安裝svn參考文章:centos7下安裝SVN

4.需要在linux服務器中安裝Jenkins參考文章:Jenkins之路(一):Jenkins安裝

配置全局工具

配置全局工具也就是配置Jenkins編譯打包時要用到的JDK以及Maven

在這裏插入圖片描述

配置這三塊地方
在這裏插入圖片描述

1.指定maven的配置文件

在這裏插入圖片描述
這裏的配置就跟你在自己的Windows電腦指定maven的settings配置文件一樣
在這裏插入圖片描述

第1和第3在下拉框中選這一下就行,不要用選擇默認配置就行

在這裏插入圖片描述

第2步和第4步的值是一樣的,裏面填的的是你linux服務器中安裝好的maven的settings配置文件

在這裏插入圖片描述
因爲我的是在這個路徑下,所以填的是/home/apache-maven-3.6.3/conf/settings.xml

2.配置jdk

點擊JDK安裝
在這裏插入圖片描述

別名可以隨便起,把自動安裝Install automatically的勾選去掉,JAVA_HOME填你在服務器上安裝的jdk的路徑
在這裏插入圖片描述

我的是在這個位置,因此值是/home/java/jdk1.8.0_251
在這裏插入圖片描述

3.配置maven

點擊maven安裝
在這裏插入圖片描述

在這裏插入圖片描述
步驟跟上面的JDK差不多,輸入maven別名,取消自動安裝Install automatically的勾選,填入MAVEN_HOME的值,這裏的值可以把上面maven配置中的文件路徑的值拷過來/home/apache-maven-3.6.3/conf/settings.xml,再去掉conf層和settings就行,當然前提你上面的配置是對的

最終/home/apache-maven-3.6.3
在這裏插入圖片描述

安裝Publish over SSH插件並配置

點擊Jenkins管理,選擇插件管理
在這裏插入圖片描述

搜索插件 Publish over,直接安裝
在這裏插入圖片描述

等待安裝
在這裏插入圖片描述

安裝完成後配置Publish Over SSH
在這裏插入圖片描述

拉到最後面找到Publish over SSH,點擊新增
在這裏插入圖片描述
在這裏插入圖片描述
name:隨便填
Hostname:服務器IP(這個就是要把打包好的jar包發送並運行的目標主機)
Username:root
Remote Directory:要發送到的遠程主機的目錄,這裏我們填 / 根目錄就行,因爲後面這個路徑我們還要配置

填好之後在點擊高級配置密碼和端口
在這裏插入圖片描述

勾選Use password authentication, or use a different key
在這裏插入圖片描述
端口使用默認的22端口,密碼輸入你的root用戶對應的密碼

點擊Test configuration按鈕,出現Success說明鏈接成功,點擊保存就行了
在這裏插入圖片描述

新建項目

上面全局的JDK和Maven已經配置好了,Publish over SSH插件也已經安裝完成了,下面我們新建一個Jenkins項目
在這裏插入圖片描述

輸入名稱,選擇自由風格的項目,點擊確定
在這裏插入圖片描述

創建好之後就可以在首頁看到相對應的項目了
在這裏插入圖片描述

項目配置

點擊項目名進行配置
在這裏插入圖片描述
在這裏插入圖片描述

1.配置源碼管理

選擇subversion,配置svn
在這裏插入圖片描述
Repository URL:配置svn的版本庫
在這裏插入圖片描述

Credentials:svn版本庫的的用戶名、密碼

點擊添加,選擇Jenkins
在這裏插入圖片描述

在這裏輸入你的svn版本庫的用戶名、密碼,點擊添加
在這裏插入圖片描述

添加之後還要選擇你添加的用戶名、密碼
在這裏插入圖片描述

添加成功之後,下面這行字就會自動消失,如果還在說明你的配置有問題,檢查下url和用戶名、密碼
在這裏插入圖片描述
在這裏插入圖片描述

2.配置構建步驟

點擊增加構建步驟,選擇圖中的配置
在這裏插入圖片描述

maven版本選擇我們上面配置好的maven,目標填入clean install,這個就是maven打包命令了
在這裏插入圖片描述

3.配置構建後操作

點擊增加構建後操作步驟,選擇圖中所示,這個配置就是將通過maven打包好的jar包發送到目標服務器
在這裏插入圖片描述

Source files配置:target/*.jar 源文件地址 ,地址的目錄是相對於jenkins workspace的目錄
Remove prefix:target/ 去除的文件地址。在Source files輸入框中填入的地址,會默認在服務器下創建相同的文件夾,所以需要將我們不需要的文件夾在這裏剔除掉
Remote directory:/home/project 發送jar包到目標服務器的路徑,
Exec command:/home/project/start.sh 文件傳輸任務執行完畢後,在遠程服務器上執行的腳本
在這裏插入圖片描述

目標服務器需要存在要執行的腳本文件
在這裏插入圖片描述

腳本文件源碼

export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/home/java/jdk1.8.0_251 #你自己的jdk路徑
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

echo "  =====關閉Java應用======"
PROCESS=`ps -ef |grep java |grep -v grep|grep /home/project/JenkinTest.jar|awk '{print $2}'`
for i in $PROCESS
do
  echo "Kill the $1 process [ $i ]"
  kill -9 $i
done
echo "  =====啓動Java應用======"
nohup java -jar /home/project/JenkinTest.jar  > /home/test/out.log 2>&1 & 
echo $! > savePid.txt
cat savePid.txt
rm  savePid.txt

拿來直接用需要修改下面四個地方,jdk的環境變量和打包好的jar包名以及日記文件,因爲遠程執行腳本不會加載服務器的環境變量,因此需要在腳本文件中手動引入jdk的環境變量,啓動jar時nohup java -jar需要用到jdk裏的命令,所以要引入jdk環境變量
在這裏插入圖片描述

修改腳本的權限,不行會提示權限不足的問題

chmod 777 start.sh

在這裏插入圖片描述
r:可讀,表示可以讀取內容,代表4

w:可寫,表示可以編輯內容,但是不可以刪除文件,代表2

x: 可執行,表示可以執行文件。代表1

rwx=4+2+1=7

測試
手動點擊構建
在這裏插入圖片描述
查看控制檯輸出
在這裏插入圖片描述
出現success,表示構建成功
在這裏插入圖片描述

並且我們去目標服務器查看,會看到有一個jar並且已經在運行了,以及日誌文件
在這裏插入圖片描述
可以通過ip+端口訪問項目了
在這裏插入圖片描述
如果目標服務器已經有了jar包和日誌文件,但你在瀏覽器還訪問不到的話,可能是你端口沒開,使用命令查看已經開放的端口

firewall-cmd --list-ports

編寫鉤子程序

到這裏我們的Jenkins已經差不多設置好了,前面我們已經可以手動構建項目,然後自動打包部署到服務器了,只差當我們提交代碼到svn時自動幫我們構建了

當有代碼提交到svn自動構建Jenkins項目這一步需要一個鉤子程序,當svn有代碼更新自動調用鉤子程序構建

1.配置遠程觸發構建的token值

再次配置下Jenkins項目
在這裏插入圖片描述

勾選 觸發遠程構建 (例如,使用腳本)
在這裏插入圖片描述

身份驗證令牌的值我們可以隨便填,然後保存

在這裏插入圖片描述
我們把紅線畫出來的這段拷出來

JENKINS_URL/job/JenkinsTest/build?token=TOKEN_NAME

將JENKINS_URL替換成我們訪問Jenkins的url
在這裏插入圖片描述

TOKEN_NAME替換成我們剛剛在身份驗證令牌中填的值,最終地址

http://192.168.91.135:8055//job/JenkinsTest/build?token=mytoken

然後我們在瀏覽器中訪問這個地址,Jenkins就會幫我們自動構建

在這裏插入圖片描述
這樣我們我們觸發構建就不是點擊這個按鈕構建,而是通過訪問地址構建
在這裏插入圖片描述

2.curl命令觸發構建

上面我們在瀏覽器訪問地址就能自動構建,那我們在Linux系統訪問這個地址也能讓Jenkins自動構建

那我們linux系統怎麼訪問http地址呢?

使用linux的curl命令

Linux 的 curl 命令用來發送 HTTP 請求。

-X 參數:指定請求方式
-v 參數:顯示響應結果
-u 參數:攜帶用戶名/密碼

命令格式:

curl -X post -v -u [Jenkins 用戶名]:[Jenkins 密碼] http://[服務器 IP 地址]:[服務器端口 號]/jenkins/job/[Jenkins 項目名稱]/build?token=[身份驗證令牌]

用戶名:密碼後面的這一段就是剛剛我們在瀏覽器訪問的地址

最終

curl -X post -v -u honger:jenkins08168114 http://192.168.91.135:8055//job/JenkinsTest/build?token=mytoken

我們直接在Linux系統運行這個命令就能觸發Jenkins構建了
在這裏插入圖片描述
在這裏插入圖片描述
好,我們離最終的成功只差一步了

3.svn鉤子程序觸發構建

我們在我們的服務器找到svn版本庫的這個位置

在這裏插入圖片描述

hooks意思就是鉤子,然後把post-commit.tmpl複製一份並重命名爲post-commit,post-commit就是svn提交之後會執行的文件

cd /home/svn/test/hooks
cp post-commit.tmpl post-commit

在這裏插入圖片描述

編輯post-commit

 vim post-commit

把裏面的內容全部註釋點,加入我們剛剛的curl命令,保存退出

curl -X post -v -u honger:jenkins08168114 http://192.168.91.135:8055//job/JenkinsTest/build?token=mytoken

在這裏插入圖片描述

給鉤子程序授權

chmod 755 post-commit

然後我們的鉤子程序就編寫完成了,svn有新的提交時會執行post-commit文件也就是執行curl命令,自己自行測試就可以了

到這裏我們Jenkins就全部配置完成了。

有幫助請點贊
有問題請留言

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章