注:首先你有一個(gè)服務(wù)器并且已經(jīng)搭好jenkins了
? 關(guān)于jenkins的搭建這里就不細(xì)說(shuō)了,這里我將簡(jiǎn)述怎么用jenkins構(gòu)建一個(gè)SpringBooot項(xiàng)目
一,準(zhǔn)備工作
1.進(jìn)入jenkins的后臺(tái),登錄之后便是這樣的

2.在Jenkins中安裝需要的插件,包括git,maven等相關(guān)的插件
一般需要兩個(gè)插件:GitHub Plugin 或 Gitee Plugin (我這里用的是gitee倉(cāng)庫(kù)) , Maven Integration plugin


3.配置全局工具,配置git和自動(dòng)安裝的maven


二、創(chuàng)建項(xiàng)目
1.準(zhǔn)備工作做完了,接下來(lái)就是正題了,在構(gòu)建項(xiàng)目之前想必你已經(jīng)擁有一個(gè)springboot項(xiàng)目和一個(gè)服務(wù)器了吧

2.源碼管理


指定分支就沒(méi)什么好說(shuō)的,看你需要構(gòu)建哪個(gè)分支的項(xiàng)目
3.Build

Root POM :pom.xml
Goals and options : clean package -Dmaven.test.skip=true
4.Post Steps ,這一步很重要,涉及到一個(gè)的自動(dòng)化構(gòu)建過(guò)程
簡(jiǎn)單描述一下,首先拿到j(luò)enkins從git上拉下來(lái)的包,將包復(fù)制到我們的目標(biāo)目錄,進(jìn)入到這個(gè)目錄然后啟動(dòng)。在這里有一個(gè)值得注意的地方,項(xiàng)目啟動(dòng)是會(huì)占用一個(gè)端口的,所以為了避免我們構(gòu)建更新后的項(xiàng)目出現(xiàn)端口被占用的情況,我們先要獲取這個(gè)端口的pid,kill這個(gè)pid,然后重新啟動(dòng)新的項(xiàng)目,在這里我們將每一次啟動(dòng)端口的pid記錄下來(lái),放在一個(gè)文件里面,每次啟動(dòng)項(xiàng)目的時(shí)候先kill這個(gè)pid,如下圖:

構(gòu)建腳本如下:
#!/bin/bash
#export BUILD_ID=dontKillMe這一句很重要,這樣指定了,項(xiàng)目啟動(dòng)之后才不會(huì)被Jenkins殺掉。
export BUILD_ID=dontKillMe
#指定最后編譯好的jar存放的位置
project_path=/root/target
#Jenkins中編譯好的jar位置
jar_path=/var/lib/jenkins/workspace/nopava-Secret/target
#Jenkins中編譯好的jar名稱
jar_name=nopava.jar
#獲取運(yùn)行編譯好的進(jìn)程ID,便于我們?cè)谥匦虏渴痦?xiàng)目的時(shí)候先殺掉以前的進(jìn)程
pid=$(cat /root/web.pid)
#殺掉對(duì)應(yīng)的進(jìn)程,如果pid不存在,則不執(zhí)行
if [? -n? "$pid"? ];? then
? ? kill? -9? $pid;
fi
#進(jìn)入指定的編譯好的jar的位置
cd? ${jar_path}
#將編譯好的jar復(fù)制到最后指定的位置
cp? ${jar_path}/${jar_name} ${project_path}
#進(jìn)入最后指定存放jar的位置
cd? ${project_path}
#啟動(dòng)jar,后臺(tái)啟動(dòng)
java -jar ${jar_name} &
#將進(jìn)程ID存入到ufind-web.pid文件中
echo $! > /root/web.pid
5.保存退出后就可以構(gòu)建了

點(diǎn)擊項(xiàng)目進(jìn)入到構(gòu)建頁(yè)面,經(jīng)過(guò)打包運(yùn)行后,你的項(xiàng)目就構(gòu)建成功啦!

藍(lán)色圓點(diǎn)表示構(gòu)建成功了,小太陽(yáng)表示構(gòu)建成功的概率,概率越高,天氣越晴朗。
6.如果發(fā)現(xiàn)構(gòu)建失敗的情況,可以在進(jìn)入到控制臺(tái)看看報(bào)錯(cuò)信息
