1. 程式人生 > >Jenkins + SVN + Batch Command (專案的自動打包和部署)

Jenkins + SVN + Batch Command (專案的自動打包和部署)

Jenkins + SVN

需求:將SVN上的指定專案(如: com.cr.dt)打成jar,併發布發到指定目錄(如: d\export2)。

SVN上的指定專案在Eclipse中顯示的目錄結構如下:

E:\...\COM.CR.DT

│  .classpath

│  .project

├─.settings

├─about

│      LICENCE.txt   

├─bin   

├─cr

│ └─conf

│           cfg.properties     

├─conf

│      log4j.properties  

├─icons

│      *.png     

├─lib

│      jcommon-1.0.17.jar

│      jfreechart-1.0.14.jar

│      log4j-1.2.16.jar

├─META-INF

│      MAINFEST.MF    

└─src     

    └─com

        └─cr

            └─dt

                ├─ui

                │      *.java

                │      Messages.java

                │      messages.properties

                │      messages_zh_CN.properties   

                └─util

                        *.java

要求打包後釋出到D:\export2目錄下。D:\export2目錄結構如下:

D:\EXPORT2

│  com.cr.dt_2013-01-01_14-22-03.jar

│ ├─about

│ ├─com

│ ├─conf

│ ├─icons

│ └─META-INF

├─cr

│ └─conf

│   └─  cfg.properties 

└─lib

        jcommon-1.0.17.jar

        jfreechart-1.0.14.jar

        log4j-1.2.16.jar

雖然實現以上需求,可通過Eclipseexport功能來進行,但每次修改程式碼後,都需要手工來打包,未免有些枯燥和繁瑣。

為擺脫這些乏味的重複勞動,可以利用Jenkins來實現專案的自動打包和部署。

具體步驟如下:

1.下載jenkins.war

2.啟動jenkins: java -jar jenkins.war

3.訪問http://localhost:8080

4.填寫任務名稱,如:test, 選擇“構建一個自由風格的軟體專案”

5.在“原始碼管理”中選擇“Subversion” (筆者使用的是SVN,故選此項)

7.在“增加構建步驟”中選擇“Execute Windows batch command”,並填寫如下批處理命令:

#編譯, class存放於bin目錄

javac -classpath .;lib\jcommon-1.0.17.jar;lib\jfreechart-1.0.14.jar;lib\log4j-1.2.16.jar src\com\cr\dt\ui\*.java src\com\cr\dt\util\*.java -d bin

#messages.properties和messages_zh_CN.properties檔案拷貝到bin\com\cr\dt\ui目錄下

copy src\com\cr\dt\ui\*.properties bin\com\cr\dt\ui

#刪除目錄".svn"及其下的子目錄和子檔案

rmdir /s /q bin\.svn\

rmdir /s /q conf\.svn\

rmdir /s /q about\.svn\

rmdir /s /q icons\.svn\

#設定打包後文件名的字尾,如:com.cr.dt_2013-01-01_14-22-03.jar

set suffix=%date:~0,10%_%time:~0,2%-%time:~3,2%-%time:~6,2%

echo %suffix%

set suffix=%suffix: =0% (格式化日期,如:2013-01-01_ 9-45-30 => 2013-01-01_09-45-30

echo %suffix%

#建立jar檔案,並將bin目錄下的檔案()打包到jar中。注:不包含bin目錄本身

jar cvfm com.cr.dt_%suffix%.jar META-INF\MAINFEST.MF -C bin\ .

#conf目錄及其下的目錄和檔案追加到"com.cr.dt_2013-01-01_14-22-03.jar"中。注:包含conf目錄本身。

jar uvf com.cr.dt_%suffix%.jar conf

jar uvf com.cr.dt_%suffix%.jar about

jar uvf com.cr.dt_%suffix%.jar icons

#部署到指定目錄

if not exist d:\export2 mkdir d:\export2 (如果目錄不存在,建立目錄)

copy com.cr.dt_%suffix%.jar d:\export2 (拷貝jar檔案到d:\export2目錄)

rmdir /s /q d:\export2\cr\  (刪除cr目錄及其子目錄和子檔案)

if not exist d:\export2\cr mkdir d:\export2\cr (如果cr目錄不存在創建立cr目錄)

xcopy /s cr d:\export2\cr (拷貝cr目錄下的子目錄及子檔案到d:\export2\cr目錄下)

rmdir /s /q d:\export2\lib\  (刪除lib目錄及其子目錄和子檔案)

if not exist d:\export2\lib mkdir d:\export2\lib

xcopy lib d:\export2\lib (拷貝lib目錄下的子檔案到d:\export2\lib目錄下)

8.點選“儲存”,然後執行“立即構建”

經過以上步驟,就可以將專案編譯併發布到指定目錄下了。

注:

Jenkins存放job的預設位置為:C:\Documents and Settings\Administrator\.jenkins

訪問jenkins主頁的預設埠為:8080

set JENKINS_HOME=d:\jenkins

cd /d %JENKINS_HOME%

java -jar %JENKINS_HOME%\jenkins.war --httpPort=8081

使startjenkins.batWindows的開機自動執行

方法一:將startjenkins.bat加入到windows啟動腳本里。

1.開啟組策略(命令:gpedit.msc

2.[計算機配置] --> [Windows 設定] --> [指令碼 (啟動/關機)] --> [啟動]

3.在“啟動 屬性”對話方塊中新增指令碼名:D:\jenkins\startjenkins.bat

以後,每次啟動計算機,輸入http://localhost:8081即可訪問jenkins主頁。

方法二:將startjenkins.bat部署為windows服務,讓該服務隨windows的開機自動啟動。

1.網上下載兩個小工具:instsrv.exesrvany.exe

2.在CMD視窗執行:instsrv jenkins_srv srvany.exe。執行完後,Windows登錄檔中[jenkins_srv]項會被建立。如:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\jenkins_srv\

3.對登錄檔做如下修改:

-a.在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\jenkins_srv\]下新建“Parameters”

-b.選中[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\jenkins_srv\Parameters][新建] --> [字串值],設定 Application=D:\jenkins\startjenkins.bat

4.在CMD視窗執行services.msc 檢視本地的服務,找到jenkins_srv啟動即可。

(在CMD視窗中執行sc start jenkins_srv)

以後,每次啟動計算機,輸入http://localhost:8081即可訪問jenkins主頁。