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 ├─b
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
虽然实现以上需求,可通过Eclipse的export功能来进行,但每次修改代码后,都需要手工来打包,未免有些枯燥和繁琐。
为摆脱这些乏味的重复劳动,可以利用Jenkins来实现项目的自动打包和部署。
具体步骤如下:
1.下载jenkins.war
2.启动jenkins: java -jar jenkins.war
3.访问http://localhost:8080
4.填写任务名称,如:test, 选择“构建一个自由风格的软件项目”
5.在“源码管理”中选择“Subversion” (笔者使用的是SVN,故选此项)
6.输入项目在SVN上的地址,Repository URL:https://LF-20120808TSLG/svn/repo/branches/20121229/com.cr.dt
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
若想更改以上默认端口和默认位置,可以新建个批处理文件,如startjenkins.bat,内容如下(Ref: http://www.cnblogs.com/itech/archive/2011/11/04/2236230.html):
set JENKINS_HOME=d:\jenkins
cd /d %JENKINS_HOME%
java -jar %JENKINS_HOME%\jenkins.war --httpPort=8081
使startjenkins.bat随Windows的开机自动运行
方法一:将startjenkins.bat加入到windows启动脚本里。
1.打开组策略(命令:gpedit.msc)
2.[计算机配置] --> [Windows 设置] --> [脚本 (启动/关机)] --> [启动]
3.在“启动 属性”对话框中添加脚本名:D:\jenkins\startjenkins.bat
以后,每次启动计算机,输入http://localhost:8081即可访问jenkins主页。
方法二:将startjenkins.bat部署为windows服务,让该服务随windows的开机自动启动。
1.网上下载两个小工具:instsrv.exe和srvany.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主页。
更多推荐
所有评论(0)