Jenkins自動(dòng)化部署SpringBoot項(xiàng)目的實(shí)現(xiàn)
1、Jenkins介紹
1.1、概念
- Jenkins是一個(gè)開源軟件項(xiàng)目,是基于Java開發(fā)的一種持續(xù)集成工具
- Jenkins是一個(gè)可擴(kuò)展的持續(xù)集成引擎
- 用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開放易用的軟件平臺(tái),使軟件的持續(xù)集成變成可能
持續(xù)集成:
- 就是通常所說的CI(Continues Integration),可以說是現(xiàn)代軟件技術(shù)開發(fā)的基礎(chǔ)
- 持續(xù)集成是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成他們的工作,通常每個(gè)成員至少集成一次,也意味著每天可能會(huì)發(fā)生多次集成。
每次集成都通過自動(dòng)化的構(gòu)建(包括編譯,發(fā)布,自動(dòng)化測(cè)試)來驗(yàn)證,從而盡快地發(fā)現(xiàn)集成錯(cuò)誤。許多團(tuán)隊(duì)發(fā)現(xiàn)這個(gè)過程可以大大減少集成的問題,讓團(tuán)隊(duì)能夠更快的開發(fā)內(nèi)聚的軟件
1.2、優(yōu)勢(shì)
- Jenkins是一個(gè)自包含的基于java的程序,可以開箱即用,包含Windows、Linux等操作系統(tǒng)的軟件包
- Jenkins可以通過其web界面輕松設(shè)置和配置,其中包括動(dòng)態(tài)錯(cuò)誤檢查和內(nèi)置幫助
- 在插件中心中有數(shù)百個(gè)插件,Jenkins集成了持續(xù)集成和持續(xù)交付工具鏈中的幾乎所有工具
- Jenkins可以輕松地跨多臺(tái)機(jī)器分配工作,幫助更快地跨多個(gè)平臺(tái)進(jìn)行構(gòu)建、測(cè)試和部署
- Jenkins可以通過其插件架構(gòu)進(jìn)行擴(kuò)展,為Jenkins所能做的事情提供了幾乎無限的可能性
- 作為可擴(kuò)展的自動(dòng)化服務(wù)器,Jenkins可以用作簡(jiǎn)單的CI服務(wù)器,也可以變成任何項(xiàng)目的持續(xù)交付中心
1.3、Jenkins目的
- Jenkins 主要是監(jiān)控軟件開發(fā)流程,快速顯示問題。所以能保證開發(fā)人員以及相關(guān)人員省時(shí)省力提高開發(fā)效率
- CI系統(tǒng)在整個(gè)開發(fā)過程中的主要作用是控制:當(dāng)系統(tǒng)在代碼存儲(chǔ)庫中探測(cè)到修改時(shí),它將運(yùn)行構(gòu)建的任務(wù)委托給構(gòu)建過程本身
- 如果構(gòu)建失敗了,那么CI系統(tǒng)將通知相關(guān)人員,然后繼續(xù)監(jiān)視存儲(chǔ)庫。它的角色看起來是被動(dòng)的;但它確能快速反映問題
2、環(huán)境準(zhǔn)備
我們本文主要介紹在windows系統(tǒng)中安裝和使用Jenkins,那么在此之前,請(qǐng)先保證你電腦上有如下環(huán)境:
- JDK8(我這里就是JDK8的環(huán)境)
- git(我這里使用的版本是:2.37.1.windows.1)
- maven(我這里使用的版本是:3.8.6)
- 一個(gè)保存SpringBoot項(xiàng)目代碼的git倉庫(注意:該項(xiàng)目的啟動(dòng)端口不能與Jenkins相同!Jenkins默認(rèn)為8080)
我這里的SpringBoot項(xiàng)目git地址是:https://gitee.com/colinWu_java/JenkinsTest.git,項(xiàng)目啟動(dòng)端口是:8001
3、Jenkins下載
3.1、下載
下載網(wǎng)址:https://get.jenkins.io/war-stable
下載war包即可,如下:
注意JDK的版本,你下載的版本太高的話,需要JDK的版本也會(huì)很高,所以看清楚了再下載,下載需要時(shí)間很久。我這里選擇的是【2.346.3】,然后下載:
下載的包如下:
3.2、運(yùn)行
然后用cmd進(jìn)入目錄后,運(yùn)行jenkins:
java -jar jenkins.war
如下:
如果你的JDK版本不支持的話就會(huì)報(bào)錯(cuò)了,如下:
此時(shí),你要么就升級(jí)你的JDK,要么就換一個(gè)低版本的jenkins,推薦換一個(gè)低版本的jenkins,因?yàn)镴DK版本升級(jí)的話影響太廣泛了
然后訪問jenkins,在瀏覽器輸入:http://localhost:8080,如下:
3.3、問題解決
如果上面界面等待幾秒,還是這個(gè)界面,那就是jenkins鏡像有問題,按照下面步驟解決
1、第一次運(yùn)行jenkins后,會(huì)在C盤的用戶目錄中,生成一個(gè).jenkins文件夾,進(jìn)入到該文件夾
2、找到文件:hudson.model.UpdateCenter.xml
3、編輯這個(gè)文件
鏡像有很多種,大家可以自行百度一下
4、重啟jenkins,再訪問http://localhost:8080,就會(huì)進(jìn)入到密碼認(rèn)證界面:
cmd窗口中,會(huì)打印密碼,直接復(fù)制填入即可
然后加載一會(huì)之后出現(xiàn)如下配置界面了:
點(diǎn)擊【安裝推薦的插件】即可:
4、Jenkins配置
4.1、用戶配置
上面頁面可能花的時(shí)間會(huì)比較久,安裝完成后是這樣的界面:
我這里設(shè)置到賬號(hào)是:wjb,密碼是:itsource123,然后點(diǎn)擊【保存并完成】:
然后:
點(diǎn)擊【開始使用Jenkins】按鈕即可
4.2、系統(tǒng)配置
4.3、全局工具配置-最重要
下面幾項(xiàng)必須配置:
- maven
- git
- JDK
然后繼續(xù)配置JDK:
然后繼續(xù)配置git:
最后配置maven:
安裝maven插件:
安裝插件進(jìn)度頁面:
然后重啟一下Jenkins
5、新建項(xiàng)目
新建Item:
在源碼管理設(shè)置模塊,選擇Git,然后輸入Gitee項(xiàng)目倉庫地址,如下圖:
繼續(xù)往下翻,構(gòu)建觸發(fā)器處,勾選Poll SCM,并輸入如下信息:* * * * *
如下:
5個(gè)星號(hào)這是什么意思? 這5個(gè)符號(hào)的位置,分別表示分、時(shí)、日、月、周 上圖中的五個(gè)*,其含義已由黃色字體顯示,表示每分鐘輪詢一次Gitee倉庫,如果倉庫有更新,則重新拉取項(xiàng)目,進(jìn)行持續(xù)集成與持續(xù)部署。 如果輸入H/5 * * * *,則表示每5分鐘輪詢一次。
繼續(xù)下翻,Build處,添加如下格式的Goals and options:
clean package -DskipTests install
如下:
繼續(xù)往下翻,POST Steps 處,勾選 Run regardless of build result,然后添加構(gòu)建步驟(Add post-build step),選擇執(zhí)行Windows批處理命令(Execute Windows batch command),然后輸入下面內(nèi)容:
@echo off set BUILD_ID=DONTKILLME set port=8001 for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /pid %%m -t -f xcopy C:\Users\it206\.jenkins\workspace\JenkinsTest\target\sp-test.jar F:\jenkins\workspace\JenkinsTest\ /Y echo 復(fù)制jar包完成 echo 執(zhí)行【sp-test.jar】---開始 start javaw -jar F:\jenkins\workspace\JenkinsTest\sp-test.jar >> springboot.log 2>&1 & echo 執(zhí)行【sp-test.jar】---結(jié)束 exit
相關(guān)參數(shù)介紹:
1、set BUILD_ID=DONTKILLME Jenkins默認(rèn)會(huì)在Build結(jié)束后Kill掉所有的衍生進(jìn)程,設(shè)置不要kill 2、xcopy 源文件 目的文件 將源文件復(fù)制到目標(biāo)文件夾下 為什么要復(fù)制一份? 下次構(gòu)建的時(shí)候,需要?jiǎng)h除現(xiàn)有的jar,重新構(gòu)建新的jar;如果直接運(yùn)行生成的jar,下次構(gòu)建的時(shí)候,無法刪除,構(gòu)建失敗。 3、echo xxx 這里只是在jenkins的控制臺(tái)輸出日志信息 4、start javaw -jar xxx.jar & 這里是告訴系統(tǒng),我的jar文件是后臺(tái)執(zhí)行,最后的符號(hào) & 一定要加,否則jenkins會(huì)認(rèn)為任務(wù)結(jié)束,會(huì)把我們的jar強(qiáng)制kill掉
如下:
最后點(diǎn)擊【保存】按鈕,然后開始構(gòu)建:
這樣查看日志:
然后就可以看到日志詳情了:
也可以在首頁進(jìn)行構(gòu)建:
然后看本地磁盤,jar包已經(jīng)復(fù)制到我指定目錄了:
但是我指定的日志文件還是回生成在Jenkins的默認(rèn)目錄,如下:
7、測(cè)試
我Gitee上的SpringBoot項(xiàng)目地址是:https://gitee.com/colinWu_java/JenkinsTest.git
測(cè)試接口代碼如下:
package cn.itsource.controller; import org.springframework.web.bind.annotation.*; /** * <p>TestController</p> * * @author 波波老師(微信 : javabobo0513) */ @RestController public class TestController { @GetMapping("/test") public String test(){ return "歡迎來到SpringBoot奇妙世界!"; } }
然后Jenkins構(gòu)建后就訪問頁面,如下:
完美,可以正常顯示接口的返回?cái)?shù)據(jù),部署成功了,然后我們修改一下接口的返回?cái)?shù)據(jù),改成下面這樣:
package cn.itsource.controller; import org.springframework.web.bind.annotation.*; /** * <p>TestController</p> * * @author 波波老師(微信 : javabobo0513) */ @RestController public class TestController { @GetMapping("/test") public String test(){ return "歡迎來到SpringBoot奇妙世界!Jenkins學(xué)習(xí)"; } }
然后代碼提交到gitee,等一分鐘后,再刷新頁面,看頁面如下:
內(nèi)容是我們修改后的值,說明Jenkins確實(shí)重新拉取項(xiàng)目重新部署了,nice啊,以后我們修改完代碼后直接提交就可以了,部署就不用管了,是不是很香
8、錯(cuò)誤解決
如果你Jenkins的控制臺(tái)中出現(xiàn)如下日志信息:
在全局安全配置里面,勾選上這個(gè)參數(shù)即可:
到此這篇關(guān)于Jenkins自動(dòng)化部署SpringBoot項(xiàng)目的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Jenkins自動(dòng)化部署SpringBoot內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- spring boot 項(xiàng)目利用Jenkins實(shí)現(xiàn)自動(dòng)化部署的教程詳解
- 詳解jenkins自動(dòng)部署springboot應(yīng)用的方法
- Jenkins自動(dòng)化部署springboot代碼實(shí)例
- springboot docker jenkins 自動(dòng)化部署并上傳鏡像的步驟詳解
- Jenkins自動(dòng)部署SpringBoot項(xiàng)目實(shí)踐教程
- Jenkins+Docker+Gitee+SpringBoot自動(dòng)化部署
- 阿里SpringBoot應(yīng)用自動(dòng)化部署實(shí)現(xiàn)IDEA版Jenkins
- Jenkins+Docker?一鍵自動(dòng)化部署?SpringBoot?項(xiàng)目的詳細(xì)步驟
- Jenkins中自動(dòng)化部署Spring Boot項(xiàng)目的全過程
相關(guān)文章
Springboot項(xiàng)目通過redis實(shí)現(xiàn)接口的冪等性
這篇文章主要為大家介紹了Springboot項(xiàng)目通過redis實(shí)現(xiàn)接口的冪等性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12jackson序列化和反序列化的應(yīng)用實(shí)踐指南
這篇文章主要給大家介紹了關(guān)于jackson序列化和反序列化的應(yīng)用實(shí)踐指南,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09SpringBoot自動(dòng)裝配之@Enable深入講解
這篇文章主要介紹了SpringBoot自動(dòng)裝配之@Enable,SpringBoot中提供了很多Enable開頭的注解,這些注解都是用于動(dòng)態(tài)啟用某些功能的。而其底層原理是使用@Import注?解導(dǎo)入一些配置類,實(shí)現(xiàn)Bean的動(dòng)態(tài)加載2023-01-01logback StatusListener的定義方法源碼解讀
這篇文章主要為大家介紹了logback StatusListener的定義方法源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Java技能點(diǎn)之SimpleDateFormat進(jìn)行日期格式化問題
這篇文章主要介紹了Java技能點(diǎn)之SimpleDateFormat進(jìn)行日期格式化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的方案
我們?cè)陧?xiàng)目中經(jīng)常碰到需要讀取固定文件的場(chǎng)景,如模板文件,一般做法是將文件放在resources目錄下,程序通過多種方式可以順利讀取文件,這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的相關(guān)資料,需要的朋友可以參考下2024-07-07SpringBoot 如何根據(jù)不同profile選擇不同配置
這篇文章主要介紹了SpringBoot 如何根據(jù)不同profile選擇不同配置的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08SpringBoot工程打包與運(yùn)行的實(shí)現(xiàn)詳解
本文主要介紹了SpringBoot工程的打包與運(yùn)行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07JavaSE static final及abstract修飾符實(shí)例解析
這篇文章主要介紹了JavaSE static final及abstract修飾符實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06