教你如何用Jenkins自動化部署項(xiàng)目(從零到搭建完成)
最近在實(shí)習(xí)中接觸了jenkins這個東西,所以花點(diǎn)時間了解了下。它可以在代碼上傳倉庫(如github,gitee,gitlab)后,在jenkins(一個網(wǎng)站界面)中通過獲取代碼倉庫中最新代碼,進(jìn)行自動化部署,而省去手動打包、上傳服務(wù)器、部署這一系列步驟,非常方便。
下面教程分為以下幾個部分:
一、在你的本地電腦或者linux服務(wù)器上下載安裝jenkins:
jenkins下載地址:https://jenkins.io/ 下載網(wǎng)站的war包版本就好了
下載完后把它部署到你的tomcat上運(yùn)行:放到tomcat的webapps目錄下,啟動tomcat(windows下雙擊startup.bat或者linux下運(yùn)行sh startup.sh),然后通過瀏覽器訪問,如我的電腦上訪問:localhost:8080/jenkins 。啟動后的界面如下:

然后到提示的文件中把里面的文本復(fù)制出來填到管理員密碼中。
接著如果是在本地電腦跑,可能會出現(xiàn):該jenkins實(shí)例似乎已離線 提示,如果出現(xiàn),是因?yàn)楸镜豩ttps訪問不了的原因。在瀏覽器中另打開一個界面http://localhost:8080/pluginManager/advanced,把升級站點(diǎn)中的url中的https改為http,保存更新。然后關(guān)掉tomcat服務(wù)器重啟,就可以聯(lián)網(wǎng)了。
接下來選擇安裝推薦的插件,這個需要一定的時間。最后額外推薦安裝兩個插件,在系統(tǒng)管理中可以安裝插件:
1、 Rebuilder
2、 Safe Restart
二、在linux服務(wù)器中安裝git, maven,創(chuàng)建一個jenkens目錄,配置git的公鑰到你的github上,這些步驟是使用jenkins的前提。
安裝git的目的是在自動化部署前實(shí)時從git遠(yuǎn)程倉庫中拉取最新的代碼。在linux(我用的是centos系統(tǒng))安裝git:
yum install git
生成密鑰:
ssh-keygen -t rsa -C youremail@abc.com
可以不設(shè)置密鑰密碼直接按三次回車。 把家目錄中生成的公鑰內(nèi)容復(fù)制到github或其他倉庫上。
安裝maven的目的是通過項(xiàng)目中的pom.xml文件自動解決項(xiàng)目依賴問題,構(gòu)建項(xiàng)目。linux中通過wget+下載鏈接下載maven的zip包然后解壓即可。配置maven環(huán)境變量:
ssh-keygen -t rsa -C youremail@abc.com
創(chuàng)建jenkins目錄,用來存儲拉取下來的項(xiàng)目代碼等。
三、將Linux服務(wù)器注冊到Jenkins上
1、開啟服務(wù)器上的ssh服務(wù),可通過 netstat -anp | grep :22命令查看是否開啟
2、先來測試一下怎么在jenkins中操作遠(yuǎn)程服務(wù)器
在jenkins中選擇系統(tǒng)管理——》新建節(jié)點(diǎn)

其中遠(yuǎn)程工作目錄即你在Linux上創(chuàng)建的jenkins目錄。在Credentials添加一個遠(yuǎn)程用戶,輸入你的遠(yuǎn)程機(jī)器用戶名和密碼保存。

點(diǎn)擊TestEnv,啟動代理。
在全局工具配置中配置git命令:

3、自動化部署過程原理:

所以需要編寫一個shell腳本來執(zhí)行這個過程。
具體的創(chuàng)建Jenkins任務(wù)的過程為
1.創(chuàng)建jenkins任務(wù)
2.填寫Server信息
3.配置git參數(shù)
4.填寫構(gòu)建語句(shell腳本),實(shí)現(xiàn)自動部署。
四、創(chuàng)建自動化部署任務(wù)
1、編寫shell部署腳本deploy.sh,并放到linux服務(wù)器中的jenkins目錄下,在該目錄下通過touch deploy.sh創(chuàng)建一個腳本,把下面的腳本復(fù)制到里面即可(到時每次自動部署都會執(zhí)行它),腳本中的my-scrum為我要自動構(gòu)建的項(xiàng)目名:
#!/usr/bin/env bash
#編譯+部署項(xiàng)目站點(diǎn)
#需要配置如下參數(shù)
# 項(xiàng)目路徑, 在Execute Shell中配置項(xiàng)目路徑, pwd 就可以獲得該項(xiàng)目路徑
# export PROJ_PATH=這個jenkins任務(wù)在部署機(jī)器上的路徑
# 輸入你的環(huán)境上tomcat的全路徑
# export TOMCAT_APP_PATH=tomcat在部署機(jī)器上的路徑
### base 函數(shù)
killTomcat()
{
#pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
#echo "tomcat Id list :$pid"
#if [ "$pid" = "" ]
#then
# echo "no tomcat pid alive"
#else
# kill -9 $pid
#fi
#上面注釋的或者下面的
cd $TOMCAT_APP_PATH/bin
sh shutdown.sh
}
cd $PROJ_PATH/my-scrum
mvn clean install
# 停tomcat
killTomcat
# 刪除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -f $TOMCAT_APP_PATH/webapps/my-scrum.war
# 復(fù)制新的工程到tomcat上
cp $PROJ_PATH/scrum/target/order.war $TOMCAT_APP_PATH/webapps/
cd $TOMCAT_APP_PATH/webapps/
mv my-scrum.war ROOT.war
# 啟動Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh
2、在jenkins上點(diǎn)擊新建一個任務(wù),填好任務(wù)名,填寫運(yùn)行的節(jié)點(diǎn)(上文中新建節(jié)點(diǎn)時創(chuàng)建的):

3、點(diǎn)擊源碼管理,填寫github(或gitlab等)地址:

4、點(diǎn)擊add,選擇check out to a sub-directory ,添加源碼下載到j(luò)enkins目錄下的指定目錄(可以命名為你的項(xiàng)目名):

5、填寫構(gòu)建任務(wù)時的shell腳本,然后保存,點(diǎn)擊立即構(gòu)建完成自動構(gòu)建。(這里有一個坑,一定要給tomcat下所有sh文件加上x權(quán)限才能啟動tomcat成功,具體為在tomcat目錄上層執(zhí)行chmod a+x -R tomcat目錄或者在tomcat的bin目錄下執(zhí)行chmod +x *.sh)
#當(dāng)jenkins進(jìn)程結(jié)束后新開的tomcat進(jìn)程不被殺死 BUILD_ID=DONTKILLME #加載變量 . /etc/profile #配置運(yùn)行參數(shù) #PROJ_PATH為設(shè)置的jenkins目錄的執(zhí)行任務(wù)目錄 export PROJ_PATH=`pwd` #配置tomcat所在目錄 export TOMCAT_APP_PATH=/root/tomcats/tomcat-my-scrum #執(zhí)行寫好的自動化部署腳本 sh /root/jenkins/deploy.sh

6、自動化構(gòu)建成功:

7、后續(xù)代碼如果有改動,只要push到github或者gitlab等上,在jenkins界面中再次執(zhí)行構(gòu)建任務(wù)就可以了,非常方便,自動化部署,再也不用手動上傳項(xiàng)目到服務(wù)器了。
五、解決一個tomcat關(guān)閉,所有tomcat都被關(guān)閉了的問題(如果你的jenkins也是安裝的服務(wù)器上的其中一個tomcat中,就可能被莫名殺掉)
這是因?yàn)樗械膖omcat的關(guān)閉腳本(shutdown.sh或者說catalina.sh)都默認(rèn)監(jiān)聽的是8005端口。只要進(jìn)去tomcat目錄下的conf目錄下的server.xml文件中,將
<Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <!-- Security listener. Documentation at /docs/config/listeners.html <Listener className="org.apache.catalina.security.SecurityListener" /> -->
中的8005端口改為不同的端口,就不會一個tomcat關(guān)閉,所有的tomcat都被關(guān)閉了
六、以后可以在linux服務(wù)器中安裝多個tomcat,來部署不同的項(xiàng)目,分別使用不同的端口,如我喜歡用8081,8082,8083等端口來解決多個tomcat端口沖突問題(在tomcat的conf目錄下的server.xml中修改即可,默認(rèn)為8080)。然后可以用jenkins來管理這些tomcat的自動化部署啦。
到此這篇關(guān)于教你如何用Jenkins自動化部署項(xiàng)目(從零到搭建完成)的文章就介紹到這了,更多相關(guān)Jenkins自動化部署項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot @PropertySource與@ImportResource有什么區(qū)別
這篇文章主要介紹了SpringBoot @PropertySource與@ImportResource有什么區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01
spring?boot集成jasypt?并實(shí)現(xiàn)自定義加解密的詳細(xì)步驟
由于項(xiàng)目中的配置文件?配置的地方過多,現(xiàn)將配置文件統(tǒng)一放到nacos上集中管理?且密碼使用加密的方式放在配置文件中,配置文件的加密使用加密庫jasypt,本文給大家介紹spring boot集成jasypt并實(shí)現(xiàn)自定義加解密,感興趣的朋友一起看看吧2023-08-08
Java精品項(xiàng)目瑞吉外賣之新增菜品與分頁查詢篇
這篇文章主要為大家詳細(xì)介紹了java精品項(xiàng)目-瑞吉外賣訂餐系統(tǒng),此項(xiàng)目過大,分為多章獨(dú)立講解,本篇內(nèi)容為新增菜品和分頁查詢功能的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例
這篇文章主要為大家介紹了Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
JavaCV攝像頭實(shí)戰(zhàn)之實(shí)現(xiàn)口罩檢測
這篇文章主要介紹了利用JavaCV實(shí)現(xiàn)口罩檢測,功能是檢測攝像頭內(nèi)的人是否帶了口罩,把檢測結(jié)果實(shí)時標(biāo)注在預(yù)覽窗口。感興趣的可以試一試2022-01-01
Java實(shí)現(xiàn)微信公眾號發(fā)送模版消息
大家好,本篇文章主要講的是Java實(shí)現(xiàn)微信公眾號發(fā)送模版消息,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
Netty + ZooKeeper 實(shí)現(xiàn)簡單的服務(wù)注冊與發(fā)現(xiàn)
服務(wù)注冊和發(fā)現(xiàn)一直是分布式的核心組件。本文介紹了借助 ZooKeeper 做注冊中心,如何實(shí)現(xiàn)一個簡單的服務(wù)注冊和發(fā)現(xiàn)。,需要的朋友可以參考下2019-06-06

