小伙伴想學(xué)Jenkins自動(dòng)構(gòu)建發(fā)布項(xiàng)目,我:安排上了!!


作者個(gè)人研發(fā)的在高并發(fā)場(chǎng)景下,提供的簡(jiǎn)單、穩(wěn)定、可擴(kuò)展的延遲消息隊(duì)列框架,具有精準(zhǔn)的定時(shí)任務(wù)和延遲隊(duì)列處理功能。自開(kāi)源半年多以來(lái),已成功為十幾家中小型企業(yè)提供了精準(zhǔn)定時(shí)調(diào)度方案,經(jīng)受住了生產(chǎn)環(huán)境的考驗(yàn)。為使更多童鞋受益,現(xiàn)給出開(kāi)源框架地址:
https://github.com/sunshinelyz/mykit-delay
PS: 歡迎各位Star源碼,也可以pr你牛逼哄哄的代碼。? ? ??
寫(xiě)在前面
趁著十一長(zhǎng)假,很多小伙伴都在悄悄學(xué)習(xí),有些是為了能夠順利通過(guò)面試,進(jìn)入大廠(chǎng)升職加薪。有些則是為了進(jìn)一步鞏固和提高自己的專(zhuān)業(yè)技能,希望有朝一日能過(guò)成為互聯(lián)網(wǎng)架構(gòu)師乃至技術(shù)專(zhuān)家。這不,就有小伙伴問(wèn)我:如何通過(guò)Jenkins自動(dòng)構(gòu)建和發(fā)布項(xiàng)目,我:安排上了??!
小伙伴的疑問(wèn)
我們還是通過(guò)一張圖來(lái)直觀的了解下小伙伴的疑問(wèn)吧。
老規(guī)則,我們直接進(jìn)入正題。
基礎(chǔ)環(huán)境
所有的環(huán)境均搭建在CentOS 6.5 x64服務(wù)器上,IP:192.168.209.121 主機(jī)名:liuyazhuang121 , 并在服務(wù)器上配置了主機(jī)名到IP的映射。
構(gòu)建Web項(xiàng)目
環(huán)境配置
首先,我們來(lái)看下如何通過(guò)Jenkins自動(dòng)構(gòu)建發(fā)布Web項(xiàng)目到遠(yuǎn)程Tomcat。我們使用的環(huán)境是:Jdk1.8+Maven3.6.3+Tomcat9.0+Jenkins2.19.3+SSH+Shell
其中,JDK、Maven和Tomcat小伙伴們可以自行下載安裝并配置系統(tǒng)環(huán)境,可以到鏈接http://download.csdn.net/download/l1028386804/10127368 下載jenkins2.19.3。
配置SSH免密碼登錄
ssh-keygen?-t?rsa
cp?~/.ssh/id_rsa.pub?~/.ssh/authorized_keys/
配置Jenkins
啟動(dòng)Jenkins
下載的Jenkins war包拷貝到${TOMCAT_HOME}/webapp目錄下,并啟動(dòng)Tomcat,在瀏覽器中輸入http://192.168.209.121:8080/jenkins,如下圖所示,則證明Jenkins啟動(dòng)成功。
安裝插件
上述默認(rèn)安裝的插件還不夠
依次點(diǎn)擊 系統(tǒng)管理->插件管理-> 可選插件-> 過(guò)濾搜索框中 查找如下插件:
Maven Integration plugin SSH plugin Deploy to container Plugin
設(shè)置系統(tǒng)管理-Global Tool Configuration
在系統(tǒng)管理-Global Tool Configuration中配置JDK和Maven,如下:
配置系統(tǒng)管理-Configure Global Security

注冊(cè)并登錄用戶(hù)


配置SSH remote hosts
在系統(tǒng)管理-系統(tǒng)設(shè)置,配置SSH remote hosts
點(diǎn)擊Add按鈕設(shè)置登錄方式,如下圖所示:
點(diǎn)擊Check connection按鈕 ,如果頁(yè)面上輸出Successfull connection,則SSH配置成功,如下圖所示:
新建項(xiàng)目構(gòu)建

配置項(xiàng)目構(gòu)建
General-配置項(xiàng)目名稱(chēng)
源碼管理-配置SVN信息
配置Pre Steps

配置Post Steps

配置完成后保存。
構(gòu)建項(xiàng)目
回到主頁(yè),點(diǎn)擊立即構(gòu)建項(xiàng)目按鈕,如下圖:
可看到頁(yè)面上出現(xiàn)對(duì)maven_test的構(gòu)建進(jìn)度條,點(diǎn)擊進(jìn)度條即可進(jìn)入日志輸出頁(yè)面,如下圖:
輸出如下日志,則代表構(gòu)建并部署到tomcat成功。
tomcat.sh腳本
最后,我們給出tomcat.sh腳本的內(nèi)容,如下所示。
#!/bin/sh??
??
##?java?env??
##?service?name????
SERVICE_NAME=tomcat_service??
case?"$1"?in??
??
????start)??
?????????/usr/local/tomcat/test-tomcat-10000/bin/startup.sh?
????????;;??
??
????stop)??
????????sleep?5??
????????##??
????????##?edu-service-aa.jar??
????????##?edu-service-aa-bb.jar??
????????P_ID=`ps?-ef?|?grep?-w?"test-tomcat-10000"?|?grep?-v?"grep"?|?awk?'{print?$2}'`??
????????if?[?"$P_ID"?==?""?];?then??
????????????echo?"===?$SERVICE_NAME?process?not?exists?or?stop?success"??
????????else??
????????????echo?"===?$SERVICE_NAME?process?pid?is:$P_ID"??
????????????echo?"===?begin?kill?$SERVICE_NAME?process,?pid?is:$P_ID"??
????????????kill??$P_ID??
????????fi??
????????;;??
??
????restart)??
????????$0?stop??
????????sleep?2??
????????$0?start??
????????echo?"===?restart?$SERVICE_NAME"??
????????;;??
??
????*)??
????????##?restart??
????????$0?stop??
????????sleep?2??
????????$0?start??
????????;;??
??
esac??
exit?0?
構(gòu)建Java項(xiàng)目
Jenkins構(gòu)建Jar包發(fā)布到遠(yuǎn)程服務(wù)器和構(gòu)建War包發(fā)布到遠(yuǎn)程服務(wù)器配置基本一致,只是Post Steps配置稍有不同。
配置Post Steps
配置Jar包發(fā)布到遠(yuǎn)程服務(wù)器的Post Steps配置如下:
構(gòu)建項(xiàng)目



account-server.sh腳本
最后,我們也給出account-server.sh腳本的內(nèi)容,如下所示。
#!/bin/sh??
??
##?java?env??
export?JAVA_HOME=/usr/local/jdk/jdk1.8.0_144??
export?JRE_HOME=$JAVA_HOME/jre??
??
##?service?name??
APP_NAME=account??
??
SERVICE_DIR=/usr/local/dubbo-server/$APP_NAME??
SERVICE_NAME=medcare-dubbo-$APP_NAME??
JAR_NAME=$SERVICE_NAME\.jar??
PID=$SERVICE_NAME\.pid??
??
cd?$SERVICE_DIR??
??
case?"$1"?in??
??
????start)??
????????nohup?$JRE_HOME/bin/java?-Xms256m?-Xmx512m?-jar?$JAR_NAME?>/dev/null?2>&1?&??
????????echo?$!?>?$SERVICE_DIR/$PID??
????????echo?"===?start?$SERVICE_NAME"??
????????;;??
??
????stop)??
????????kill?`cat?$SERVICE_DIR/$PID`??
????????rm?-rf?$SERVICE_DIR/$PID??
????????echo?"===?stop?$SERVICE_NAME"??
??
????????sleep?5??
????????##??
????????##?edu-service-aa.jar??
????????##?edu-service-aa-bb.jar??
????????P_ID=`ps?-ef?|?grep?-w?"$SERVICE_NAME"?|?grep?-v?"grep"?|?awk?'{print?$2}'`??
????????if?[?"$P_ID"?==?""?];?then??
????????????echo?"===?$SERVICE_NAME?process?not?exists?or?stop?success"??
????????else??
????????????echo?"===?$SERVICE_NAME?process?pid?is:$P_ID"??
????????????echo?"===?begin?kill?$SERVICE_NAME?process,?pid?is:$P_ID"??
????????????kill?-9?$P_ID??
????????fi??
????????;;??
??
????restart)??
????????$0?stop??
????????sleep?2??
????????$0?start??
????????echo?"===?restart?$SERVICE_NAME"??
????????;;??
??
????*)??
????????##?restart??
????????$0?stop??
????????sleep?2??
????????$0?start??
????????;;??
??
esac??
exit?0??【推薦】.NET Core開(kāi)發(fā)實(shí)戰(zhàn)視頻課程?★★★
.NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門(mén)篇-開(kāi)篇及總體規(guī)劃
【.NET Core微服務(wù)實(shí)戰(zhàn)-統(tǒng)一身份認(rèn)證】開(kāi)篇及目錄索引
Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)
.NET Core中的一個(gè)接口多種實(shí)現(xiàn)的依賴(lài)注入與動(dòng)態(tài)選擇看這篇就夠了
10個(gè)小技巧助您寫(xiě)出高性能的ASP.NET Core代碼
用abp vNext快速開(kāi)發(fā)Quartz.NET定時(shí)任務(wù)管理界面
在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務(wù)輕松實(shí)現(xiàn)作業(yè)調(diào)度
現(xiàn)身說(shuō)法:實(shí)際業(yè)務(wù)出發(fā)分析百億數(shù)據(jù)量下的多表查詢(xún)優(yōu)化
