自動化部署工作報告
工作目的:實現(xiàn)自動化部署工作,以期提高開發(fā)項目的工作效率;
工作內(nèi)容:利用開源的可持續(xù)集成工具,實現(xiàn)java項目的自動編譯、打包、發(fā)布等工作流程;
具體工作內(nèi)容如下:
一、 自動化部署的環(huán)境搭建;
二、 Maven對java項目的編譯、打包與發(fā)布;
三、 Hudson對java項目實現(xiàn)自動化的編譯、打包與發(fā)布;
現(xiàn)逐點論述如下:
一、 自動化部署的環(huán)境搭建
自動化部署需要如下幾樣工具:1.jdk的安裝;2.web服務(wù)器(tomcat 6.0);3.svn客戶端與服務(wù)器端;4.maven;5.hudson及其相應(yīng)插件的安裝;
1. jdk的安裝
安裝JDK(Java軟件開發(fā)工具包,含JRE)(76.6 MB).EXE,一般都是一路點擊next,最后點擊finish,結(jié)束安裝;
設(shè)置環(huán)境變量:首先在”我的電腦”點右鍵,選擇”屬性”,再選擇”高級”選項,點”環(huán)境變量”,在系統(tǒng)變量中找到classpath變量,點”編輯”,在原來的內(nèi)容后面先寫個分號,再寫個小數(shù)點,再寫個分號,然后再把安裝的bin文件的路徑寫上去,如C:\Program Files\Java\jdk
這樣就把環(huán)境變量設(shè)置好了;
以上三個變量設(shè)置完畢,則按“確定”直至屬性窗口消失,下來是驗證看看安裝是否成功。先打開“開始”->“運行”,打入“cmd”,進入dos系統(tǒng)界面。然后打“java -version”,如果安裝成功。系統(tǒng)會顯示java version jdk"
2.Apache Tomcat V6.0.EXE 的安裝
運行apache-tomcat-
單擊【Next】按鈕就完成了。安裝時,它會自動找到你的JDK安裝路徑。需要設(shè)置幾個環(huán)境變量:
CATALINA_HOME =Tomcat解壓目錄,我們這里就是CATALINA_HOME=C:\tomcat6
ClassPath =%CATALINA_HOME%\lib;
啟動Tomcat后,在瀏覽器地址欄輸入http://localhost:8080/, 顯示下圖:
3.svn客戶端與服務(wù)器端安裝
服務(wù)器端公司已安裝,在此就不再多講了。
svn客戶端TortoiseSVN-
安裝在此不再詳述;主要是通過客戶端與服務(wù)器端連接,公司服務(wù)器端svn://192.168.1.240/svn_py/,并在服務(wù)器端開啟權(quán)限,建立自己的目錄:svn://192.168.1.240/svn_py/test_yang;
4.maven
在安裝Maven之前,首先要確認你已經(jīng)正確安裝了JDK。Maven可以運行在JDK 1.4及以上的版本上。本書的所有樣例都基于JDK 5及以上版本。打開Windows的命令行,運行如下的命令來檢查你的Java安裝:
C:\Users\Juven Xu>echo %JAVA_HOME%
C:\Users\Juven Xu>java -version
上述命令首先檢查環(huán)境變量JAVA_HOME是否指向了正確的JDK目錄,接著嘗試運行java命令。如果Windows無法執(zhí)行java命令,或者無法找到JAVA_HOME環(huán)境變量。你就需要檢查Java是否安裝了,或者環(huán)境變量是否設(shè)置正確。
解壓縮che-maven-
打開系統(tǒng)屬性面板(桌面上右鍵單擊“我的電腦”→“屬性”),點擊高級系統(tǒng)設(shè)置,再點擊環(huán)境變量,在系統(tǒng)變量中新建一個變量,變量名為M2_HOME,變量值為Maven的安裝目錄D:\bin\apache-maven-3.0。點擊確定,接著在系統(tǒng)變量中找到一個名為Path的變量,在變量值的末尾加上%M2_HOME%\bin;,注意多個值之間需要有分號隔開,然后點擊確定。至此,環(huán)境變量設(shè)置完成,現(xiàn)在打開一個新的cmd窗口(這里強調(diào)新的窗口是因為新的環(huán)境變量配置需要新的cmd窗口才能生效),運行如下命令檢查Maven的安裝情況:
C:\Users\Juven Xu>echo %M2_HOME%
C:\Users\Juven Xu>mvn -v
第一條命令echo %M2_HOME%用來檢查環(huán)境變量M2_HOME是否指向了正確的Maven安裝目錄;而mvn –version執(zhí)行了第一條Maven命令,以檢查Windows是否能夠找到正確的mvn執(zhí)行腳本。
5.hudson及其相應(yīng)插件的安裝
下載hudson.war包和deploy.hpi插件:將hudson.war包copy到tomcat下的webapp下,重啟tomcat,tomcat將自動把hudson的war包解析為名為hudson的文件夾,自此hudson部署完畢,在瀏覽器地址欄輸入http://localhost:8080/hudson,顯示下圖即可:
安裝deploy.hpi插件:側(cè)列表菜單Manage Hudson,然后選擇第三項Manage Plugins,這個選項的功能是管理Hudson插件的,在插件管理中心點擊Advanced,在upload plugin 中上傳剛才下載的插件,上傳完畢后需要重啟hudson才能完成安裝(即重啟tomcat)。
這時在插件已安裝項可以找到它:deploy-plugin,版本1.6版的;不過使用它,一個是在創(chuàng)建項目中啟用它,一個是必須在項目build成功以后才行。
二、Maven對java項目的編譯、打包與發(fā)布
在這里先講清楚一點,為什要寫對web項目的編譯、打包與發(fā)布,因為到了hudson下,這些工作任然是由maven去完成的。而且確實也是通過對maven的熟悉,使得我對web項目的目錄結(jié)構(gòu)和pom.xml文件的作用有了更為清晰的認識。
首先介紹在maven下對web項目的編譯、打包過程,發(fā)布放到hudson中在寫。
1.首先利用command line進入任意目錄,輸入
mvn archetype:create -DgroupId=com.mycompany.webapp -DartifactId=myweb -DarchetypeArtifactId=maven-archetype-webapp
注意上述命令一行輸完再回車;
一定要build成功,即圖中的“build successful”。
此時生成myweb文件目錄,如圖:
注意此在main目錄下建一個名為java的目錄,把自己的代碼源文件復(fù)制進去;那么main目錄下resource、webapp、java都有了;這三個缺一不可;另外圖中標紅的文件不僅一個不能少,而且各自位置一定不能錯,錯一個,就掛了。然后再command line下回到\myweb 目錄下,注意一定在這個目錄下,因為pom.xml也在這個目錄下,maven就是靠對pom.xml的解析進行工作,它相當于make的makefile、ant的build.xml,否則maven會提示找不到pom文件。然后再輸入mvn package打包,注意此時一定要生成target文件目錄,否則hudson下的job文件夾下的workspace就是個空的,而且war包也在下面,沒有就不能發(fā)布了,就又掛了。
2.分析pom文件
<modelVersion>
<groupId>com.yourcompany</groupId>
<artifactId>myproject</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>myproject Maven Webapp</name>
<url>http://maven.apache.org</url>
<build>
<finalName>myproject</finalName>
</build>
modelVersion:此必需的元素說明了本POM所使用的模型版本。
groupId:本元素表示創(chuàng)建本項目的組織的唯一標識。groupId是一個項目的核心關(guān)鍵標識之一,它基于組織的完整屬性域名。
artifactId:表示本項目的主要項目的唯一基本名。一個典型的由Maven生成的項目名稱將會是如下的格式:<artifactId>-<version>.<extension>。 packaging:表示本項目所使用的包類型(JAR, WAR,EAR等)。
version:表示項目的版本,Maven對于版本管理大有幫助,你會經(jīng)??吹揭粋€版本的SNAPSHOT(快照),指示項目在開發(fā)中的不同狀態(tài)。
name:項目的顯示名稱,常用于Maven生成的文檔當中,并在構(gòu)建過程中,為項目或其他的項目作為一種依賴使用。
注意:標紅的兩句是關(guān)鍵------一個指出打包的方式,因此上圖中的web文件目錄結(jié)構(gòu)是關(guān)鍵,否則與打包方式不匹配,無論是在maven還是在hudson中都會出錯的!第二個注意在hudson中構(gòu)建任務(wù)build的方式就選SNAPSHOT,選其他我不能保證一定不出問題!另外"groupId"與"artifactId"missing,一定要將"i"的小寫改成大寫;
三、Hudson對java項目實現(xiàn)自動化的編譯、打包與發(fā)布
1. Hudson的全局配置
點擊左邊列表菜單Manage Hudson,然后點擊Configure System??梢詫?/span>hudson進行系統(tǒng)配置,包括全局路徑和變量設(shè)置等。如下圖
注意;要修改hudson的主目錄
hudson主目錄一般默認為是
C:\WINDOWS\system32\config\systemprofile\.hudson
改成自己的如d:\hudson;(記得重啟hudson與tomcat才行);
另外設(shè)置好Maven與JDK
Maven這里的設(shè)置,就是取個名字,然后路徑中指定maven2的解壓路徑。如下圖所示
在這里設(shè)置時,我一般去掉Install automatically,而是直接指定MAVEN_HOME,我的maven是裝在C:\Program Files\apache-maven-
Jdk的設(shè)置是必須的,正確的設(shè)置也是去掉Install automatically選項,直接填寫名稱和 JAVA_HOME我的JAVA_HOME是安裝在C:\Java\jdk
其他的可以不設(shè)立了。
2.創(chuàng)建job
點擊左側(cè)列表菜單的New Job,出現(xiàn)如下界面:
注意:選擇build a maven2 project 這一項,提示中明確指出take advantage of your
Pom files,故必須事前準備該文件;
填寫Job name,然后選中Build a maven2 project,依個人項目設(shè)定,這里講Maven2的工程,點擊OK按鈕。進入job的設(shè)置頁面如下圖所示:
Source Code Management:這里就是要結(jié)合版本控制工具的地方了,這里選用的是svn,所以設(shè)置如下:
在Repository URL里填入你的倉庫地址,svn有兩種地址,一種是http://.....這樣的,一種是svn://......的,我這里是用的第二種方式,所以填入svn://192.168.1.240/svn_py/test_yang
(注意,這里是工程的根目錄,也就是pom.xml所在的目錄,可不要填寫成svn://192.168.1.240/svn_py/test_yang/myproject等目錄)
Build Triggers:注意前面說了選SNAPSHOT。
配置deploy插件:
在配置頁面的Post-build Actions項下面會多出一項功能:Deploy war/ear to a container,在這里WAR/EAR file:就是填寫hudson所打好的war包路徑,之前說過,hudson打好的war包是放在這里的,所以這里就寫%Hudson_home%/jobs/projecct_name/ workspace/ projecct_name/ target/你的war文件的名稱.war。Container選擇你的Tomcat的版本。Manager user name:填寫Tomcat的用戶名,默認是admin, Manager password:填寫Tomcat的密碼,默認是空。Tomcat URL:填寫http://localhost:8080/就ok了,至此保存就可以了,
這里一定要注意WAR/EAR file:填寫相對路徑,不要寫代表環(huán)境變量的相對路徑,更不能寫絕對路徑(那會發(fā)生Ant GLOB pattern語法錯誤);寫成如下即可:
或則寫成路徑**/*.war;
最后還要注意hudson的時間與svn服務(wù)器的時間最好一致;
以上job配置完畢;
3.在svn服務(wù)器上構(gòu)建web文件目錄
注意利用前面的maven構(gòu)建的web項目文件目錄,如下圖:
在svn服務(wù)器自己的文件目錄下,也要構(gòu)建這樣的文件目錄,這一點非常關(guān)鍵,否則hudson會提示諸如以下兩種錯誤:
這種錯誤要么是沒有pom文件,要么是pom文件位置不對,他的位置必須是在web項目文件根目錄下一級;
提示這錯誤主要是web.xml文件沒有或不能在正確位置,他的位置應(yīng)該在WEB-INF文件夾中。
所以,在svn服務(wù)器上構(gòu)建web項目文件目錄結(jié)構(gòu)非常關(guān)鍵!
最后,點擊計劃job,在hudson控制臺就可以看見全過程,同時生成的war包,也部署到tomcat下的webapps文件夾下,可以通過http://localhost:8080/war包名稱,進行web發(fā)布。
編譯、打包、發(fā)布控制臺結(jié)果如下:
發(fā)布結(jié)果如下:
附加:
自己的環(huán)境變量設(shè)置:
Classpath:\Program Files\Java\jdk1.6.0_20\bin
HUDSON_HOME:D:\HUDSON
JAVA_HOME:C:\Program Files\Java\jdk1.6.0_20
MAVEN_HOME:C:\Program Files\apache-maven-3.0.3-bin\apache-maven-3.0.3
Path:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;.;C:\Program Files\Java\jdk1.6.0_20\lib\tool.jar;D:\Program Files\subversion-1.6.17\bin;D:\Program Files\TortoiseSVN\bin;%ANT_HOME%/bin;%ANT_HOME%/lib;%MAVEN_HOME%\bin