Jenkins+SVN+tomcat+Batch Command(Java web項目打包部署運行)


使用Jenkins有大半年,從來沒有關心過部署和後臺配置,要知道之前公司可是一個global team在做這個工作,而現在的公司,當然要自己動手,發憤圖強。


1. Jenkins Install

官網:http://jenkins-ci.org/

1)war包

官網下載war包,在路徑下運行命令:java -jar jenkins.war

也可以做成批處理文件startJenkins.bat,方便每次啓動,輸入以下內容

set JENKINS_HOME=e:\jenkins
cd /d %JENKINS_HOME%  
java -jar %JENKINS_HOME%\jenkins.war 

2)msi

第一次是用war包裝成功的,後來用了幾天在搞插件,結果裝了一個插件只支持tomcat7,然後jenkins就再也startup不起來了,刪了插件也不行,索性刪了jenkins重裝,但是war包的方法就不管用了(不知道爲什麼),只好轉向msi一鍵安裝包,雖然好用,但是它是默認啓動項,而且感覺不夠專業。


2. Jenkins Configeration

Global Tool Configuration:



Configure System:




3.  Create a new Job:

Freestyle project



輸入SVN Repository URL和SVN的用戶名和密碼(wy wy),不然會分別報以下兩個錯誤:



svn:

https://192.168.1.9/svn/APL/trunk/products/system/projects/server/AplIot



4. 選擇build方式:

此處選擇Windows batch command


輸入以下內容:

# compile java to class files

javac  -encoding UTF-8 -classpath .;WebRoot\WEB-INF\lib\* src\com\zhyd\apliot\common\*.java src\com\zhyd\apliot\controller\*.java  src\com\zhyd\apliot\dao\*.java src\com\zhyd\apliot\dao\impl\*.java src\com\zhyd\apliot\filter\*.java  src\com\zhyd\apliot\listener\*.java src\com\zhyd\apliot\modbus\dao\*.java src\com\zhyd\apliot\modbus\dao\impl\*.java src\com\zhyd\apliot\modbus\model\*.java  src\com\zhyd\apliot\model\*.java  src\com\zhyd\apliot\server\dao\*.java src\com\zhyd\apliot\server\dao\impl\*.java src\com\zhyd\apliot\task\*.java src\com\zhyd\apliot\test\*.java src\com\zhyd\apliot\util\*.java src\com\zhyd\apliot\xml\dao\*.java  src\com\zhyd\apliot\xml\dao\impl\*.java  -d WebRoot\WEB-INF\classes

cd WebRoot
# 把%workspace%/WebRoot下面的內容打包爲AplIot.war
jar -cvf AplIot.war ./*

注意事項:

1)javac 編譯時報"編碼GBK的不可映射字符"
解決方法是javac -encoding UTF-8 XXX.java

2)-classpath參數指定依賴的第三方jar所在的目錄(-classpath .;WebRoot\WEB-INF\lib\*),到具體目錄時不能使用*.jar來匹配所有依賴的jar包,而要使用*

3)注意路徑和war包生成的結構,如果想把某個文件夾中所有文件打包,要cd到該文件夾內再打包,不然,會把外層文件夾一起打包,破壞了war包結構,導致tomcat解壓運行後無法顯示web網頁


5. 選擇Post-build Actions

此處使用了Deploy Plugin插件



注意事項:

1)

WAR/EAR files: WebRoot/AplIot.war
Context path: /AplIot
username: tomcat
password: tomcat
http://192.168.1.76:8080    -> tomcat遠端地址,此處使用的是本機虛擬機地址

2)WAR/EAR files是%workspace%下面的相對地址,不用帶%workspace%名字

3)Context path如果帶/的話,Tomcat URL最後就不要帶

4)要把應用服務器的防火牆關閉

5)tomcat默認的登錄是註釋的,我們需要打開。在tomcat/conf/tomcat-users.xml下添加以下內容,記得把註釋符號刪除

  <role rolename="tomcat" /> 
  <role rolename="admin"/> 
  <role rolename="admin-gui"/> 
  <role rolename="manager"/> 
  <role rolename="manager-gui"/> 
  <role rolename="manager-script"/> 
  <user username="tomcat" password="tomcat"roles="tomcat,admin-gui,admin,manager,manager-gui,manager-script"/>

6)要先把虛擬機裏的tomcat啓動(startup.bat),再運行jenkins job,不然會報錯

Caused by:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException

7)報錯Unsupported major.minor version 51.0解決辦法可參考:http://www.111cn.net/jsp/Jsp-Servlet/45158.htm


Root cause:用jdk7編譯的class文件放到基於jdk6運行在tomcat之中,就會報這個錯。

Solution: 在Jenkins的JDK配置的版本與tomcat運行的jdk的版本(也就是電腦環境變量設置的jdk版本)一致。

8)Jenkins報錯Caused by:java.net.ConnectException: Connection timed out: connect是因爲連不上遠端tomcat。

我一直在連接本機ip(192.168.1.75)對應的tomcat,一直報這個錯,後來分析應該是因爲本機ip對應的tomcat被Jenkins佔用,後來就把tomcat的URL配成本機的虛擬機對應的ip(192.168.1.76)即可。


6. 登陸
登陸虛擬機,輸入網頁:
http://192.168.1.76:8080/AplIot/webSite-iot/html/login.html
http://localhost:8080/AplIot/webSite-iot/html/login.html
可登陸說明部署正確。


參考文章:
http://files.cnblogs.com/files/zz0412/jenkins%E5%85%A5%E9%97%A8%E6%89%8B%E5%86%8C.pdf
http://blog.csdn.net/kdevn/article/details/8459448
http://blog.csdn.net/qq_32517251/article/details/52469623

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章