/**
* lihaibo
* 文章內(nèi)容都是根據(jù)自己工作情況實踐得出。
*如有錯誤,請指正
* 版權(quán)聲明:本博客歡迎轉(zhuǎn)發(fā),但請保留原作者信息!
http://www.cnblogs.com/horizonli/p/5407551.html
本博客已經(jīng)添加"打賞"功能,"打賞"位置位于右邊欄紅色框中,感謝您的贊助.
*/
一、deploy插件
在jenkins中發(fā)布application到遠(yuǎn)端有很多方法,除了publish over ssh外還有個插件deploy.hpi也可以實現(xiàn)。
?? 插件下載地址:
鏈接: http://pan.baidu.com/s/1pLotSmR 密碼: jzud
插件安裝方法:? 點擊:Jenkins(三)---Jenkins初始配置和插件配置
或手動轉(zhuǎn)到 http://www.cnblogs.com/horizonli/p/5331970.html
二、配置 啟用插件前需要對遠(yuǎn)程端的容器進(jìn)行環(huán)境初始化(這里以tomcat為例)
?1.tomcat能正常啟動
?2.tomcat能在web界面使用用戶登錄到app? manager
? 1)配置增加tomcat用戶:
? 2)添加用戶和角色
?3)登錄tomcat manager
登錄后如果能看到下面的界面表示配置正確
三、使用deploy插件發(fā)布war包到遠(yuǎn)程容器(這里以tomcat為例)
在系統(tǒng)設(shè)置中配置maven/jdk/git? 可以參考:Jenkins(三)---Jenkins初始配置和插件配置?(除去七 SSH這一節(jié) )
啟動插件
打開之后填寫
這里單獨(dú)說下war包的路徑和界面:
在后臺看是這樣的:
從前臺看這樣的:
界面地址:
這個地址就是用設(shè)置的用戶和密碼登錄后的界面地址如下圖:
四、利用deploy插件發(fā)布application到遠(yuǎn)程主機(jī)
?? 1.首先確保遠(yuǎn)程主機(jī)上的tomcat能正常啟動并能使用用戶登錄到application管理界面
?? 2.再進(jìn)行構(gòu)建操作
?? 3.如下圖所示構(gòu)建成功
INFO] Building war: /opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------[INFO] Total time:6.782 s
[INFO] Finished at: 2016-04-19T14:06:53+08:00[INFO] Final Memory: 27M/438M
[INFO] ------------------------------------------------------------------------[JENKINS] Archiving /opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/pom.xml to com.eliteams/quick4j/1.0.0/quick4j-1.0.0.pom
[JENKINS] Archiving /opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war to com.eliteams/quick4j/1.0.0/quick4j-1.0.0.war
channel stopped
Deploying /opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war to container Tomcat6.x Remote
? [/opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war] is not deployed. Doing a fresh deployment.
? Deploying [/opt/jenkins_tomcat6/jobs/quick4j_demo/workspace/target/quick4j.war]
Finished: SUCCESS
?? 4.測試是否發(fā)布成功
??? 4.1檢查tomcat manager頁面
?? 4.2web界面查看
====================================================================================
遇到的問題總結(jié):
?問題一:部署app的時候,tomcat出現(xiàn)“403/401 for URL: http://172.16.18.192:8090/manager/text/list” 和The username you provided is not allowed to use the text-based Tomcat Manager (error 403)
??? 問題點: tomcat用戶配置文件
??? 解決方案:檢查用戶名和密碼是否正確? 是否添加了用戶角色和權(quán)限.
?問題二(最常見):部署完app后會出現(xiàn)內(nèi)存溢出"java.lang.OutOfMemoryError: PermGen space"
??? 問題點:tomcat的虛擬機(jī)內(nèi)存不足,需要設(shè)置更大的內(nèi)存
??? 解決方案:1.找到tomcat路徑,用編輯器打開catalina.sh,在“echo "Using CATALINA_BASE:??? $CATALINA_BASE"”上面加入以下行:
??????????? JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
???????????????? 2.用腳本重啟tomcat服務(wù)器,再部署。
???????????????? 重啟tomcat示例腳本:
#!/bin/bash
#Time
log_time=`date+[%Y-%m-%d]%H:%M:%S`
###manual_properties###
tomcat_basehome=/opt/tomcat6/apache-tomcat-6.0.45tomcat_port=9090shell_environment=/bin/bash
war_Dir=/opt/jenkins
war_Name=quick4j.war
###manual_properties###
#update server environmentecho"**********************************? ${log_time} *************************************"echo"updating server? environment start"export JAVA_HOME=/app/java/jdk1.8.0_11
export JRE_HOME=/app/java/jdk1.8.0_11/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar/export CATALINA_2_HOME=/opt/tomcat6/apache-tomcat-6.0.45export CATALINA_2_BASE=/opt/tomcat6/apache-tomcat-6.0.45export TOMCAT_2_HOME=/opt/tomcat6/apache-tomcat-6.0.45sleep3echo"updating server? environment? end"#build check funcationecho"check tomcat status..."check_tomcat_status(){
? ? ? netstat -ant|grep ${tomcat_port}
? ? ? t=$?if[ $t -eq0];thenecho"tomcat is running....port is ${tomcat_port}"echo"shutdown tomcat....."echo">>>>>>>shutdown tomcat begin<<<<<<<<"? ? ? ? ? ? ${shell_environment} ${tomcat_basehome}/bin/shutdown.shecho">>>>>>>shutdown tomcat end <<<<<<<<"sleep5elif[ $t -ne0];thenecho"tomcat is poweroff"? ? ? ? ? ? ? ${shell_environment} ${tomcat_basehome}/bin/shutdown.shsleep5fi}
#check tomcat status invoke functioncheck_tomcat_status
#transfer? application package
deploy_Loaction=${tomcat_basehome}/webapps/war_Dir_Data=`ls ${war_Dir}`echo"start? transfer? war package to tomcat webapps ......."if[ -z $war_Dir ];thenecho"Folder ${war_Dir} is empty.please check war package in this folder!"? ? exit 1elseecho"Find ${war_Dir} exist war package ${war_Name}"? ? # echo"deleteing old? package ${war_Name} in ${war_Dir}"? ? # rm${war_Dir}/${war_Name}
? ? echo"deleteing old? package ${war_Name} in ${deploy_Loaction}"rm ${deploy_Loaction}${war_Name}
? ? echo"start? transfer ${war_Name} to ${deploy_Loaction}"cp${war_Dir}/${war_Name}? ${deploy_Loaction}
? ? sleep3fi#reboot tomcat echo" >>>>>>>? rebooting? tomcat begin <<<<<<<<"${shell_environment} ${tomcat_basehome}/bin/startup.shecho" >>>>>>>? rebooting? tomcat end <<<<<<<<"echo"the log you can read in canalina.out"echo"************************ deploy war package into container Successlly? **********************************"
?問題三:遇到“Connection refused”的異常
??? 問題點:tomcat
??? 解決方案:請檢查遠(yuǎn)程機(jī)的容器是否啟動、端口是否設(shè)置正常,不同的容器配置方式不一樣,請參考相應(yīng)容器的配置文檔
?問題四:遇到“Deployed application at context path /xxx but context failed to start”
??? 問題點:tomcat
??? 解決方案:到遠(yuǎn)程機(jī)的WEB容器下查看日志
問題總結(jié)部分參考:http://blog.csdn.net/houyefeng/article/details/50996198