最近一段时间一直对CI工具非常关注,正好前两天终于有点时间,把这个好好用了一下,所以写了这篇文档。最新版本为3.0,可以从http://cruisecontrol.sourceforge.net/下载.
- 要想用得先下载,地址就不提了,占地儿。我下载的是最新版本cruisecontrol-bin-2.3.1.zip,如果不是研究的话,建议最好下载一个bin包,这样能省去很多麻烦。解压后我们能看到一些目录。
其中CruiseControl(以下简称CC)自带ant1.6.3;文档在docs目录下,这里面包括config.xml的相关的参数设置说明;logs下面包括日志信息,可以通过在config.xml中指定日志路径和名称;projects下面放的是需要进行持续集成的项目,jarkarta-commons是使用apache的math项目作例子;lib目录中放有cruisecontrol.jar和其他运行需要的jar;webapps下是cruisecontrol build结果的网站,可以通过访问 http://127.0.0.1:8080/cruisecontrol 来查看build的结果;在build后会产生artifacts目录,这个目录用来存放发布的工件。
- 使用cruisecontrol前的准备工作
- 建立CVS管理项目源码
建议最好使用CVS管理源码,好处在这里就勿需多言了。具体创建的过程可以参考相关的《CVS使用手册》,这里需要注意的是module的设置,可以参照相应的文档来设置。
- 设置ANT环境变量
ANT的使用也不是本篇所要阐述的,在这里只是说一些可能碰到的情况。在按照ANT的使用指南配置好后,可以在其他环境下试一下是否好用,如果你的JDK比较新的话最好也用比较新的ant,这里使用的是CC自带的ant,本文的环境是JDK5.0+Ant1.6.3+Eclipse3.1+Tomcat5.5,OS:WinXP SP2
- 编写项目的build.xml
接下来用需要编写的是ant的build.xml文件,在本文中,我编写了这样的一个例子,为了便于理解,target都采用了中文,接下来我们会看到。另外,在编写build文件的时候,我还发现一个问题,我编写的build文件怎么也不好用,只要一Run as ant,就会报异常,而在命令提示符下运行ant则没有这个问题,经过一段时间检查,发现原来是Eclipse所带的ant版本比较低,后来下载新的ant后没有更新eclipse的ant目录,需要进行如下的设置:
- Checkout项目到CC_HOME/projects目录
配置好CVSROOT后,在CC_HOME/projects下执行$ cvs checkout module_name 具体的配置方法在这里不说了。这是需要手工作的,否则CC是不会自动监测变更的。
- 修改config.xml
根据实际项目的情况修改config.xml的情况,我们下面会用一个例子来说明。
- 建立CVS管理项目源码
- 运行cruisecontrol
在作完上面的工作后,我们就可以启动CC了,如果是在unix平台下需要执行
$ CC_HOME/ cruisecontrol.sh ;如果是在windows平台下执行cruisecontrol.bat,成功后会出现如下的界面:
屏幕上出现Project commons-math started和BuildQueue started提示就说明已经正确的执行了CC。
在执行后,我们可以通过IE查看build情况,界面如下:
下面显示的是build的结果,现在的结果是BUILD FAILED,因为写这篇文档时网络不通,所以无法连接到apache上获得程序进行编译,就出现了错误。
我们可以看到,CC还提供了RSS订阅的功能,借助RSS阅读器,我们可以方便的获得最新的构建信息。界面如下:
好,我们见过了CC的使用过程,下面让我们通过一个例子来实现这个过程。
- 例子
在这个例子中,我们新建了一个项目,项目的名字叫hello,项目的结构如下:
main/src/java/com/test/qik/HelloMaven.java:示例的程序
package com.test.qik;public class HelloMaven { public static boolean main(String[] args) { System.out.println("Hello, maven!"); return true; } public void testa() throws Exception { System.out.println("test,可以发布到生产库的版本"); }}main/test/java/com/test/qik/HelloMavenTest.java:示例程序的单元测试用例package com.test.qik;import junit.framework.TestCase;public class HelloMavenTest extends TestCase { public static void main(String[] args) { } public HelloMavenTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Test method for 'com.test.qik.HelloMaven.main(String[])' */ public void testMain() { HelloMaven hm = new HelloMaven(); assertEquals(hm.main(null),true); }}target/:输出路径build.xml:ant的构建文件文件内容如下:============================================================== 正在删除源程序目录... 正在创建源程序目录... 正在删除测试程序目录... 正在创建测试程序目录... 正在删除编译程序目录... 正在创建编译程序目录... 正在删除lib目录... 正在创建lib目录... 正在删除单元测试报告目录... 正在创建单元测试报告目录... 从CVS中获取源码... 从CVS中获取lib目录... 编译程序... 运行单元测试用例... 生成单元测试报告... 发送测试报告邮件... 打包成jar文件...
- 总结
我们可以看到整个过程还是很简单的,通过CC,我们可以部分减轻CI的工作量,但可以看到核心的构建工作还是在project的build.xml中,如果CC能提供常见的模版就更好了(呵呵,我还是想偷懒)。另外CC的监控本地工作目录的功能有些弱智,比如我只写了"projects/hello",则它只认为在”project/hello”目录下的文件有更新才启动build过程,如果我们更新的是下面的子目录,则不能自动监控。
最近一段时间一直对CI工具非常关注,正好前两天终于有点时间,把这个好好用了一下,所以写了这篇文档。最新版本为3.0,可以从http://cruisecontrol.sourceforge.net/下载.
- 要想用得先下载,地址就不提了,占地儿。我下载的是最新版本cruisecontrol-bin-2.3.1.zip,如果不是研究的话,建议最好下载一个bin包,这样能省去很多麻烦。解压后我们能看到一些目录。
其中CruiseControl(以下简称CC)自带ant1.6.3;文档在docs目录下,这里面包括config.xml的相关的参数设置说明;logs下面包括日志信息,可以通过在config.xml中指定日志路径和名称;projects下面放的是需要进行持续集成的项目,jarkarta-commons是使用apache的math项目作例子;lib目录中放有cruisecontrol.jar和其他运行需要的jar;webapps下是cruisecontrol build结果的网站,可以通过访问 http://127.0.0.1:8080/cruisecontrol 来查看build的结果;在build后会产生artifacts目录,这个目录用来存放发布的工件。
- 使用cruisecontrol前的准备工作
- 建立CVS管理项目源码
建议最好使用CVS管理源码,好处在这里就勿需多言了。具体创建的过程可以参考相关的《CVS使用手册》,这里需要注意的是module的设置,可以参照相应的文档来设置。
- 设置ANT环境变量
ANT的使用也不是本篇所要阐述的,在这里只是说一些可能碰到的情况。在按照ANT的使用指南配置好后,可以在其他环境下试一下是否好用,如果你的JDK比较新的话最好也用比较新的ant,这里使用的是CC自带的ant,本文的环境是JDK5.0+Ant1.6.3+Eclipse3.1+Tomcat5.5,OS:WinXP SP2
- 编写项目的build.xml
接下来用需要编写的是ant的build.xml文件,在本文中,我编写了这样的一个例子,为了便于理解,target都采用了中文,接下来我们会看到。另外,在编写build文件的时候,我还发现一个问题,我编写的build文件怎么也不好用,只要一Run as ant,就会报异常,而在命令提示符下运行ant则没有这个问题,经过一段时间检查,发现原来是Eclipse所带的ant版本比较低,后来下载新的ant后没有更新eclipse的ant目录,需要进行如下的设置:
- Checkout项目到CC_HOME/projects目录
配置好CVSROOT后,在CC_HOME/projects下执行$ cvs checkout module_name 具体的配置方法在这里不说了。这是需要手工作的,否则CC是不会自动监测变更的。
- 修改config.xml
根据实际项目的情况修改config.xml的情况,我们下面会用一个例子来说明。
- 建立CVS管理项目源码
- 运行cruisecontrol
在作完上面的工作后,我们就可以启动CC了,如果是在unix平台下需要执行
$ CC_HOME/ cruisecontrol.sh ;如果是在windows平台下执行cruisecontrol.bat,成功后会出现如下的界面:
屏幕上出现Project commons-math started和BuildQueue started提示就说明已经正确的执行了CC。
在执行后,我们可以通过IE查看build情况,界面如下:
下面显示的是build的结果,现在的结果是BUILD FAILED,因为写这篇文档时网络不通,所以无法连接到apache上获得程序进行编译,就出现了错误。
我们可以看到,CC还提供了RSS订阅的功能,借助RSS阅读器,我们可以方便的获得最新的构建信息。界面如下:
好,我们见过了CC的使用过程,下面让我们通过一个例子来实现这个过程。
- 例子
在这个例子中,我们新建了一个项目,项目的名字叫hello,项目的结构如下:
main/src/java/com/test/qik/HelloMaven.java:示例的程序
package com.test.qik;public class HelloMaven { public static boolean main(String[] args) { System.out.println("Hello, maven!"); return true; } public void testa() throws Exception { System.out.println("test,可以发布到生产库的版本"); }}main/test/java/com/test/qik/HelloMavenTest.java:示例程序的单元测试用例package com.test.qik;import junit.framework.TestCase;public class HelloMavenTest extends TestCase { public static void main(String[] args) { } public HelloMavenTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Test method for 'com.test.qik.HelloMaven.main(String[])' */ public void testMain() { HelloMaven hm = new HelloMaven(); assertEquals(hm.main(null),true); }}target/:输出路径build.xml:ant的构建文件文件内容如下:============================================================== 正在删除源程序目录... 正在创建源程序目录... 正在删除测试程序目录... 正在创建测试程序目录... 正在删除编译程序目录... 正在创建编译程序目录... 正在删除lib目录... 正在创建lib目录... 正在删除单元测试报告目录... 正在创建单元测试报告目录... 从CVS中获取源码... 从CVS中获取lib目录... 编译程序... 运行单元测试用例... 生成单元测试报告... 发送测试报告邮件... 打包成jar文件...
- 总结
我们可以看到整个过程还是很简单的,通过CC,我们可以部分减轻CI的工作量,但可以看到核心的构建工作还是在project的build.xml中,如果CC能提供常见的模版就更好了(呵呵,我还是想偷懒)。另外CC的监控本地工作目录的功能有些弱智,比如我只写了"projects/hello",则它只认为在”project/hello”目录下的文件有更新才启动build过程,如果我们更新的是下面的子目录,则不能自动监控。
最近一段时间一直对CI工具非常关注,正好前两天终于有点时间,把这个好好用了一下,所以写了这篇文档。最新版本为3.0,可以从http://cruisecontrol.sourceforge.net/下载.
- 要想用得先下载,地址就不提了,占地儿。我下载的是最新版本cruisecontrol-bin-2.3.1.zip,如果不是研究的话,建议最好下载一个bin包,这样能省去很多麻烦。解压后我们能看到一些目录。
其中CruiseControl(以下简称CC)自带ant1.6.3;文档在docs目录下,这里面包括config.xml的相关的参数设置说明;logs下面包括日志信息,可以通过在config.xml中指定日志路径和名称;projects下面放的是需要进行持续集成的项目,jarkarta-commons是使用apache的math项目作例子;lib目录中放有cruisecontrol.jar和其他运行需要的jar;webapps下是cruisecontrol build结果的网站,可以通过访问 http://127.0.0.1:8080/cruisecontrol 来查看build的结果;在build后会产生artifacts目录,这个目录用来存放发布的工件。
- 使用cruisecontrol前的准备工作
- 建立CVS管理项目源码
建议最好使用CVS管理源码,好处在这里就勿需多言了。具体创建的过程可以参考相关的《CVS使用手册》,这里需要注意的是module的设置,可以参照相应的文档来设置。
- 设置ANT环境变量
ANT的使用也不是本篇所要阐述的,在这里只是说一些可能碰到的情况。在按照ANT的使用指南配置好后,可以在其他环境下试一下是否好用,如果你的JDK比较新的话最好也用比较新的ant,这里使用的是CC自带的ant,本文的环境是JDK5.0+Ant1.6.3+Eclipse3.1+Tomcat5.5,OS:WinXP SP2
- 编写项目的build.xml
接下来用需要编写的是ant的build.xml文件,在本文中,我编写了这样的一个例子,为了便于理解,target都采用了中文,接下来我们会看到。另外,在编写build文件的时候,我还发现一个问题,我编写的build文件怎么也不好用,只要一Run as ant,就会报异常,而在命令提示符下运行ant则没有这个问题,经过一段时间检查,发现原来是Eclipse所带的ant版本比较低,后来下载新的ant后没有更新eclipse的ant目录,需要进行如下的设置:
- Checkout项目到CC_HOME/projects目录
配置好CVSROOT后,在CC_HOME/projects下执行$ cvs checkout module_name 具体的配置方法在这里不说了。这是需要手工作的,否则CC是不会自动监测变更的。
- 修改config.xml
根据实际项目的情况修改config.xml的情况,我们下面会用一个例子来说明。
- 建立CVS管理项目源码
- 运行cruisecontrol
在作完上面的工作后,我们就可以启动CC了,如果是在unix平台下需要执行
$ CC_HOME/ cruisecontrol.sh ;如果是在windows平台下执行cruisecontrol.bat,成功后会出现如下的界面:
屏幕上出现Project commons-math started和BuildQueue started提示就说明已经正确的执行了CC。
在执行后,我们可以通过IE查看build情况,界面如下:
下面显示的是build的结果,现在的结果是BUILD FAILED,因为写这篇文档时网络不通,所以无法连接到apache上获得程序进行编译,就出现了错误。
我们可以看到,CC还提供了RSS订阅的功能,借助RSS阅读器,我们可以方便的获得最新的构建信息。界面如下:
好,我们见过了CC的使用过程,下面让我们通过一个例子来实现这个过程。
- 例子
在这个例子中,我们新建了一个项目,项目的名字叫hello,项目的结构如下:
main/src/java/com/test/qik/HelloMaven.java:示例的程序
package com.test.qik;public class HelloMaven { public static boolean main(String[] args) { System.out.println("Hello, maven!"); return true; } public void testa() throws Exception { System.out.println("test,可以发布到生产库的版本"); }}main/test/java/com/test/qik/HelloMavenTest.java:示例程序的单元测试用例package com.test.qik;import junit.framework.TestCase;public class HelloMavenTest extends TestCase { public static void main(String[] args) { } public HelloMavenTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Test method for 'com.test.qik.HelloMaven.main(String[])' */ public void testMain() { HelloMaven hm = new HelloMaven(); assertEquals(hm.main(null),true); }}target/:输出路径build.xml:ant的构建文件文件内容如下:============================================================== 正在删除源程序目录... 正在创建源程序目录... 正在删除测试程序目录... 正在创建测试程序目录... 正在删除编译程序目录... 正在创建编译程序目录... 正在删除lib目录... 正在创建lib目录... 正在删除单元测试报告目录... 正在创建单元测试报告目录... 从CVS中获取源码... 从CVS中获取lib目录... 编译程序... 运行单元测试用例... 生成单元测试报告... 发送测试报告邮件... 打包成jar文件...
- 总结
我们可以看到整个过程还是很简单的,通过CC,我们可以部分减轻CI的工作量,但可以看到核心的构建工作还是在project的build.xml中,如果CC能提供常见的模版就更好了(呵呵,我还是想偷懒)。另外CC的监控本地工作目录的功能有些弱智,比如我只写了"projects/hello",则它只认为在”project/hello”目录下的文件有更新才启动build过程,如果我们更新的是下面的子目录,则不能自动监控。
最近一段时间一直对CI工具非常关注,正好前两天终于有点时间,把这个好好用了一下,所以写了这篇文档。最新版本为3.0,可以从http://cruisecontrol.sourceforge.net/下载.
- 要想用得先下载,地址就不提了,占地儿。我下载的是最新版本cruisecontrol-bin-2.3.1.zip,如果不是研究的话,建议最好下载一个bin包,这样能省去很多麻烦。解压后我们能看到一些目录。
其中CruiseControl(以下简称CC)自带ant1.6.3;文档在docs目录下,这里面包括config.xml的相关的参数设置说明;logs下面包括日志信息,可以通过在config.xml中指定日志路径和名称;projects下面放的是需要进行持续集成的项目,jarkarta-commons是使用apache的math项目作例子;lib目录中放有cruisecontrol.jar和其他运行需要的jar;webapps下是cruisecontrol build结果的网站,可以通过访问 http://127.0.0.1:8080/cruisecontrol 来查看build的结果;在build后会产生artifacts目录,这个目录用来存放发布的工件。
- 使用cruisecontrol前的准备工作
- 建立CVS管理项目源码
建议最好使用CVS管理源码,好处在这里就勿需多言了。具体创建的过程可以参考相关的《CVS使用手册》,这里需要注意的是module的设置,可以参照相应的文档来设置。
- 设置ANT环境变量
ANT的使用也不是本篇所要阐述的,在这里只是说一些可能碰到的情况。在按照ANT的使用指南配置好后,可以在其他环境下试一下是否好用,如果你的JDK比较新的话最好也用比较新的ant,这里使用的是CC自带的ant,本文的环境是JDK5.0+Ant1.6.3+Eclipse3.1+Tomcat5.5,OS:WinXP SP2
- 编写项目的build.xml
接下来用需要编写的是ant的build.xml文件,在本文中,我编写了这样的一个例子,为了便于理解,target都采用了中文,接下来我们会看到。另外,在编写build文件的时候,我还发现一个问题,我编写的build文件怎么也不好用,只要一Run as ant,就会报异常,而在命令提示符下运行ant则没有这个问题,经过一段时间检查,发现原来是Eclipse所带的ant版本比较低,后来下载新的ant后没有更新eclipse的ant目录,需要进行如下的设置:
- Checkout项目到CC_HOME/projects目录
配置好CVSROOT后,在CC_HOME/projects下执行$ cvs checkout module_name 具体的配置方法在这里不说了。这是需要手工作的,否则CC是不会自动监测变更的。
- 修改config.xml
根据实际项目的情况修改config.xml的情况,我们下面会用一个例子来说明。
- 建立CVS管理项目源码
- 运行cruisecontrol
在作完上面的工作后,我们就可以启动CC了,如果是在unix平台下需要执行
$ CC_HOME/ cruisecontrol.sh ;如果是在windows平台下执行cruisecontrol.bat,成功后会出现如下的界面:
屏幕上出现Project commons-math started和BuildQueue started提示就说明已经正确的执行了CC。
在执行后,我们可以通过IE查看build情况,界面如下:
下面显示的是build的结果,现在的结果是BUILD FAILED,因为写这篇文档时网络不通,所以无法连接到apache上获得程序进行编译,就出现了错误。
我们可以看到,CC还提供了RSS订阅的功能,借助RSS阅读器,我们可以方便的获得最新的构建信息。界面如下:
好,我们见过了CC的使用过程,下面让我们通过一个例子来实现这个过程。
- 例子
在这个例子中,我们新建了一个项目,项目的名字叫hello,项目的结构如下:
main/src/java/com/test/qik/HelloMaven.java:示例的程序
package com.test.qik;public class HelloMaven { public static boolean main(String[] args) { System.out.println("Hello, maven!"); return true; } public void testa() throws Exception { System.out.println("test,可以发布到生产库的版本"); }}main/test/java/com/test/qik/HelloMavenTest.java:示例程序的单元测试用例package com.test.qik;import junit.framework.TestCase;public class HelloMavenTest extends TestCase { public static void main(String[] args) { } public HelloMavenTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Test method for 'com.test.qik.HelloMaven.main(String[])' */ public void testMain() { HelloMaven hm = new HelloMaven(); assertEquals(hm.main(null),true); }}target/:输出路径build.xml:ant的构建文件文件内容如下:============================================================== 正在删除源程序目录... 正在创建源程序目录... 正在删除测试程序目录... 正在创建测试程序目录... 正在删除编译程序目录... 正在创建编译程序目录... 正在删除lib目录... 正在创建lib目录... 正在删除单元测试报告目录... 正在创建单元测试报告目录... 从CVS中获取源码... 从CVS中获取lib目录... 编译程序... 运行单元测试用例... 生成单元测试报告... 发送测试报告邮件... 打包成jar文件...
- 总结
我们可以看到整个过程还是很简单的,通过CC,我们可以部分减轻CI的工作量,但可以看到核心的构建工作还是在project的build.xml中,如果CC能提供常见的模版就更好了(呵呵,我还是想偷懒)。另外CC的监控本地工作目录的功能有些弱智,比如我只写了"projects/hello",则它只认为在”project/hello”目录下的文件有更新才启动build过程,如果我们更新的是下面的子目录,则不能自动监控。
最近一段时间一直对CI工具非常关注,正好前两天终于有点时间,把这个好好用了一下,所以写了这篇文档。最新版本为3.0,可以从http://cruisecontrol.sourceforge.net/下载.
- 要想用得先下载,地址就不提了,占地儿。我下载的是最新版本cruisecontrol-bin-2.3.1.zip,如果不是研究的话,建议最好下载一个bin包,这样能省去很多麻烦。解压后我们能看到一些目录。
其中CruiseControl(以下简称CC)自带ant1.6.3;文档在docs目录下,这里面包括config.xml的相关的参数设置说明;logs下面包括日志信息,可以通过在config.xml中指定日志路径和名称;projects下面放的是需要进行持续集成的项目,jarkarta-commons是使用apache的math项目作例子;lib目录中放有cruisecontrol.jar和其他运行需要的jar;webapps下是cruisecontrol build结果的网站,可以通过访问 http://127.0.0.1:8080/cruisecontrol 来查看build的结果;在build后会产生artifacts目录,这个目录用来存放发布的工件。
- 使用cruisecontrol前的准备工作
- 建立CVS管理项目源码
建议最好使用CVS管理源码,好处在这里就勿需多言了。具体创建的过程可以参考相关的《CVS使用手册》,这里需要注意的是module的设置,可以参照相应的文档来设置。
- 设置ANT环境变量
ANT的使用也不是本篇所要阐述的,在这里只是说一些可能碰到的情况。在按照ANT的使用指南配置好后,可以在其他环境下试一下是否好用,如果你的JDK比较新的话最好也用比较新的ant,这里使用的是CC自带的ant,本文的环境是JDK5.0+Ant1.6.3+Eclipse3.1+Tomcat5.5,OS:WinXP SP2
- 编写项目的build.xml
接下来用需要编写的是ant的build.xml文件,在本文中,我编写了这样的一个例子,为了便于理解,target都采用了中文,接下来我们会看到。另外,在编写build文件的时候,我还发现一个问题,我编写的build文件怎么也不好用,只要一Run as ant,就会报异常,而在命令提示符下运行ant则没有这个问题,经过一段时间检查,发现原来是Eclipse所带的ant版本比较低,后来下载新的ant后没有更新eclipse的ant目录,需要进行如下的设置:
- Checkout项目到CC_HOME/projects目录
配置好CVSROOT后,在CC_HOME/projects下执行$ cvs checkout module_name 具体的配置方法在这里不说了。这是需要手工作的,否则CC是不会自动监测变更的。
- 修改config.xml
根据实际项目的情况修改config.xml的情况,我们下面会用一个例子来说明。
- 建立CVS管理项目源码
- 运行cruisecontrol
在作完上面的工作后,我们就可以启动CC了,如果是在unix平台下需要执行
$ CC_HOME/ cruisecontrol.sh ;如果是在windows平台下执行cruisecontrol.bat,成功后会出现如下的界面:
屏幕上出现Project commons-math started和BuildQueue started提示就说明已经正确的执行了CC。
在执行后,我们可以通过IE查看build情况,界面如下:
下面显示的是build的结果,现在的结果是BUILD FAILED,因为写这篇文档时网络不通,所以无法连接到apache上获得程序进行编译,就出现了错误。
我们可以看到,CC还提供了RSS订阅的功能,借助RSS阅读器,我们可以方便的获得最新的构建信息。界面如下:
好,我们见过了CC的使用过程,下面让我们通过一个例子来实现这个过程。
- 例子
在这个例子中,我们新建了一个项目,项目的名字叫hello,项目的结构如下:
main/src/java/com/test/qik/HelloMaven.java:示例的程序
package com.test.qik;public class HelloMaven { public static boolean main(String[] args) { System.out.println("Hello, maven!"); return true; } public void testa() throws Exception { System.out.println("test,可以发布到生产库的版本"); }}main/test/java/com/test/qik/HelloMavenTest.java:示例程序的单元测试用例package com.test.qik;import junit.framework.TestCase;public class HelloMavenTest extends TestCase { public static void main(String[] args) { } public HelloMavenTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Test method for 'com.test.qik.HelloMaven.main(String[])' */ public void testMain() { HelloMaven hm = new HelloMaven(); assertEquals(hm.main(null),true); }}target/:输出路径build.xml:ant的构建文件文件内容如下:============================================================== 正在删除源程序目录... 正在创建源程序目录... 正在删除测试程序目录... 正在创建测试程序目录... 正在删除编译程序目录... 正在创建编译程序目录... 正在删除lib目录... 正在创建lib目录... 正在删除单元测试报告目录... 正在创建单元测试报告目录... 从CVS中获取源码... 从CVS中获取lib目录... 编译程序... 运行单元测试用例... 生成单元测试报告... 发送测试报告邮件... 打包成jar文件...
- 总结
我们可以看到整个过程还是很简单的,通过CC,我们可以部分减轻CI的工作量,但可以看到核心的构建工作还是在project的build.xml中,如果CC能提供常见的模版就更好了(呵呵,我还是想偷懒)。另外CC的监控本地工作目录的功能有些弱智,比如我只写了"projects/hello",则它只认为在”project/hello”目录下的文件有更新才启动build过程,如果我们更新的是下面的子目录,则不能自动监控。
最近一段时间一直对CI工具非常关注,正好前两天终于有点时间,把这个好好用了一下,所以写了这篇文档。最新版本为3.0,可以从http://cruisecontrol.sourceforge.net/下载.
- 要想用得先下载,地址就不提了,占地儿。我下载的是最新版本cruisecontrol-bin-2.3.1.zip,如果不是研究的话,建议最好下载一个bin包,这样能省去很多麻烦。解压后我们能看到一些目录。
其中CruiseControl(以下简称CC)自带ant1.6.3;文档在docs目录下,这里面包括config.xml的相关的参数设置说明;logs下面包括日志信息,可以通过在config.xml中指定日志路径和名称;projects下面放的是需要进行持续集成的项目,jarkarta-commons是使用apache的math项目作例子;lib目录中放有cruisecontrol.jar和其他运行需要的jar;webapps下是cruisecontrol build结果的网站,可以通过访问 http://127.0.0.1:8080/cruisecontrol 来查看build的结果;在build后会产生artifacts目录,这个目录用来存放发布的工件。
- 使用cruisecontrol前的准备工作
- 建立CVS管理项目源码
建议最好使用CVS管理源码,好处在这里就勿需多言了。具体创建的过程可以参考相关的《CVS使用手册》,这里需要注意的是module的设置,可以参照相应的文档来设置。
- 设置ANT环境变量
ANT的使用也不是本篇所要阐述的,在这里只是说一些可能碰到的情况。在按照ANT的使用指南配置好后,可以在其他环境下试一下是否好用,如果你的JDK比较新的话最好也用比较新的ant,这里使用的是CC自带的ant,本文的环境是JDK5.0+Ant1.6.3+Eclipse3.1+Tomcat5.5,OS:WinXP SP2
- 编写项目的build.xml
接下来用需要编写的是ant的build.xml文件,在本文中,我编写了这样的一个例子,为了便于理解,target都采用了中文,接下来我们会看到。另外,在编写build文件的时候,我还发现一个问题,我编写的build文件怎么也不好用,只要一Run as ant,就会报异常,而在命令提示符下运行ant则没有这个问题,经过一段时间检查,发现原来是Eclipse所带的ant版本比较低,后来下载新的ant后没有更新eclipse的ant目录,需要进行如下的设置:
- Checkout项目到CC_HOME/projects目录
配置好CVSROOT后,在CC_HOME/projects下执行$ cvs checkout module_name 具体的配置方法在这里不说了。这是需要手工作的,否则CC是不会自动监测变更的。
- 修改config.xml
根据实际项目的情况修改config.xml的情况,我们下面会用一个例子来说明。
- 建立CVS管理项目源码
- 运行cruisecontrol
在作完上面的工作后,我们就可以启动CC了,如果是在unix平台下需要执行
$ CC_HOME/ cruisecontrol.sh ;如果是在windows平台下执行cruisecontrol.bat,成功后会出现如下的界面:
屏幕上出现Project commons-math started和BuildQueue started提示就说明已经正确的执行了CC。
在执行后,我们可以通过IE查看build情况,界面如下:
下面显示的是build的结果,现在的结果是BUILD FAILED,因为写这篇文档时网络不通,所以无法连接到apache上获得程序进行编译,就出现了错误。
我们可以看到,CC还提供了RSS订阅的功能,借助RSS阅读器,我们可以方便的获得最新的构建信息。界面如下:
好,我们见过了CC的使用过程,下面让我们通过一个例子来实现这个过程。
- 例子
在这个例子中,我们新建了一个项目,项目的名字叫hello,项目的结构如下:
main/src/java/com/test/qik/HelloMaven.java:示例的程序
package com.test.qik;public class HelloMaven { public static boolean main(String[] args) { System.out.println("Hello, maven!"); return true; } public void testa() throws Exception { System.out.println("test,可以发布到生产库的版本"); }}main/test/java/com/test/qik/HelloMavenTest.java:示例程序的单元测试用例package com.test.qik;import junit.framework.TestCase;public class HelloMavenTest extends TestCase { public static void main(String[] args) { } public HelloMavenTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Test method for 'com.test.qik.HelloMaven.main(String[])' */ public void testMain() { HelloMaven hm = new HelloMaven(); assertEquals(hm.main(null),true); }}target/:输出路径build.xml:ant的构建文件文件内容如下:============================================================== 正在删除源程序目录... 正在创建源程序目录... 正在删除测试程序目录... 正在创建测试程序目录... 正在删除编译程序目录... 正在创建编译程序目录... 正在删除lib目录... 正在创建lib目录... 正在删除单元测试报告目录... 正在创建单元测试报告目录... 从CVS中获取源码... 从CVS中获取lib目录... 编译程序... 运行单元测试用例... 生成单元测试报告... 发送测试报告邮件... 打包成jar文件...
- 总结
我们可以看到整个过程还是很简单的,通过CC,我们可以部分减轻CI的工作量,但可以看到核心的构建工作还是在project的build.xml中,如果CC能提供常见的模版就更好了(呵呵,我还是想偷懒)。另外CC的监控本地工作目录的功能有些弱智,比如我只写了"projects/hello",则它只认为在”project/hello”目录下的文件有更新才启动build过程,如果我们更新的是下面的子目录,则不能自动监控。
最近一段时间一直对CI工具非常关注,正好前两天终于有点时间,把这个好好用了一下,所以写了这篇文档。最新版本为3.0,可以从http://cruisecontrol.sourceforge.net/下载.
- 要想用得先下载,地址就不提了,占地儿。我下载的是最新版本cruisecontrol-bin-2.3.1.zip,如果不是研究的话,建议最好下载一个bin包,这样能省去很多麻烦。解压后我们能看到一些目录。
其中CruiseControl(以下简称CC)自带ant1.6.3;文档在docs目录下,这里面包括config.xml的相关的参数设置说明;logs下面包括日志信息,可以通过在config.xml中指定日志路径和名称;projects下面放的是需要进行持续集成的项目,jarkarta-commons是使用apache的math项目作例子;lib目录中放有cruisecontrol.jar和其他运行需要的jar;webapps下是cruisecontrol build结果的网站,可以通过访问 http://127.0.0.1:8080/cruisecontrol 来查看build的结果;在build后会产生artifacts目录,这个目录用来存放发布的工件。
- 使用cruisecontrol前的准备工作
- 建立CVS管理项目源码
建议最好使用CVS管理源码,好处在这里就勿需多言了。具体创建的过程可以参考相关的《CVS使用手册》,这里需要注意的是module的设置,可以参照相应的文档来设置。
- 设置ANT环境变量
ANT的使用也不是本篇所要阐述的,在这里只是说一些可能碰到的情况。在按照ANT的使用指南配置好后,可以在其他环境下试一下是否好用,如果你的JDK比较新的话最好也用比较新的ant,这里使用的是CC自带的ant,本文的环境是JDK5.0+Ant1.6.3+Eclipse3.1+Tomcat5.5,OS:WinXP SP2
- 编写项目的build.xml
接下来用需要编写的是ant的build.xml文件,在本文中,我编写了这样的一个例子,为了便于理解,target都采用了中文,接下来我们会看到。另外,在编写build文件的时候,我还发现一个问题,我编写的build文件怎么也不好用,只要一Run as ant,就会报异常,而在命令提示符下运行ant则没有这个问题,经过一段时间检查,发现原来是Eclipse所带的ant版本比较低,后来下载新的ant后没有更新eclipse的ant目录,需要进行如下的设置:
- Checkout项目到CC_HOME/projects目录
配置好CVSROOT后,在CC_HOME/projects下执行$ cvs checkout module_name 具体的配置方法在这里不说了。这是需要手工作的,否则CC是不会自动监测变更的。
- 修改config.xml
根据实际项目的情况修改config.xml的情况,我们下面会用一个例子来说明。
- 建立CVS管理项目源码
- 运行cruisecontrol
在作完上面的工作后,我们就可以启动CC了,如果是在unix平台下需要执行
$ CC_HOME/ cruisecontrol.sh ;如果是在windows平台下执行cruisecontrol.bat,成功后会出现如下的界面:
屏幕上出现Project commons-math started和BuildQueue started提示就说明已经正确的执行了CC。
在执行后,我们可以通过IE查看build情况,界面如下:
下面显示的是build的结果,现在的结果是BUILD FAILED,因为写这篇文档时网络不通,所以无法连接到apache上获得程序进行编译,就出现了错误。
我们可以看到,CC还提供了RSS订阅的功能,借助RSS阅读器,我们可以方便的获得最新的构建信息。界面如下:
好,我们见过了CC的使用过程,下面让我们通过一个例子来实现这个过程。
- 例子
在这个例子中,我们新建了一个项目,项目的名字叫hello,项目的结构如下:
main/src/java/com/test/qik/HelloMaven.java:示例的程序
package com.test.qik;public class HelloMaven { public static boolean main(String[] args) { System.out.println("Hello, maven!"); return true; } public void testa() throws Exception { System.out.println("test,可以发布到生产库的版本"); }}main/test/java/com/test/qik/HelloMavenTest.java:示例程序的单元测试用例package com.test.qik;import junit.framework.TestCase;public class HelloMavenTest extends TestCase { public static void main(String[] args) { } public HelloMavenTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Test method for 'com.test.qik.HelloMaven.main(String[])' */ public void testMain() { HelloMaven hm = new HelloMaven(); assertEquals(hm.main(null),true); }}target/:输出路径build.xml:ant的构建文件文件内容如下:============================================================== 正在删除源程序目录... 正在创建源程序目录... 正在删除测试程序目录... 正在创建测试程序目录... 正在删除编译程序目录... 正在创建编译程序目录... 正在删除lib目录... 正在创建lib目录... 正在删除单元测试报告目录... 正在创建单元测试报告目录... 从CVS中获取源码... 从CVS中获取lib目录... 编译程序... 运行单元测试用例... 生成单元测试报告... 发送测试报告邮件... 打包成jar文件...
- 总结
我们可以看到整个过程还是很简单的,通过CC,我们可以部分减轻CI的工作量,但可以看到核心的构建工作还是在project的build.xml中,如果CC能提供常见的模版就更好了(呵呵,我还是想偷懒)。另外CC的监控本地工作目录的功能有些弱智,比如我只写了"projects/hello",则它只认为在”project/hello”目录下的文件有更新才启动build过程,如果我们更新的是下面的子目录,则不能自动监控。
最近一段时间一直对CI工具非常关注,正好前两天终于有点时间,把这个好好用了一下,所以写了这篇文档。最新版本为3.0,可以从http://cruisecontrol.sourceforge.net/下载.
- 要想用得先下载,地址就不提了,占地儿。我下载的是最新版本cruisecontrol-bin-2.3.1.zip,如果不是研究的话,建议最好下载一个bin包,这样能省去很多麻烦。解压后我们能看到一些目录。
其中CruiseControl(以下简称CC)自带ant1.6.3;文档在docs目录下,这里面包括config.xml的相关的参数设置说明;logs下面包括日志信息,可以通过在config.xml中指定日志路径和名称;projects下面放的是需要进行持续集成的项目,jarkarta-commons是使用apache的math项目作例子;lib目录中放有cruisecontrol.jar和其他运行需要的jar;webapps下是cruisecontrol build结果的网站,可以通过访问 http://127.0.0.1:8080/cruisecontrol 来查看build的结果;在build后会产生artifacts目录,这个目录用来存放发布的工件。
- 使用cruisecontrol前的准备工作
- 建立CVS管理项目源码
建议最好使用CVS管理源码,好处在这里就勿需多言了。具体创建的过程可以参考相关的《CVS使用手册》,这里需要注意的是module的设置,可以参照相应的文档来设置。
- 设置ANT环境变量
ANT的使用也不是本篇所要阐述的,在这里只是说一些可能碰到的情况。在按照ANT的使用指南配置好后,可以在其他环境下试一下是否好用,如果你的JDK比较新的话最好也用比较新的ant,这里使用的是CC自带的ant,本文的环境是JDK5.0+Ant1.6.3+Eclipse3.1+Tomcat5.5,OS:WinXP SP2
- 编写项目的build.xml
接下来用需要编写的是ant的build.xml文件,在本文中,我编写了这样的一个例子,为了便于理解,target都采用了中文,接下来我们会看到。另外,在编写build文件的时候,我还发现一个问题,我编写的build文件怎么也不好用,只要一Run as ant,就会报异常,而在命令提示符下运行ant则没有这个问题,经过一段时间检查,发现原来是Eclipse所带的ant版本比较低,后来下载新的ant后没有更新eclipse的ant目录,需要进行如下的设置:
- Checkout项目到CC_HOME/projects目录
配置好CVSROOT后,在CC_HOME/projects下执行$ cvs checkout module_name 具体的配置方法在这里不说了。这是需要手工作的,否则CC是不会自动监测变更的。
- 修改config.xml
根据实际项目的情况修改config.xml的情况,我们下面会用一个例子来说明。
- 建立CVS管理项目源码
- 运行cruisecontrol
在作完上面的工作后,我们就可以启动CC了,如果是在unix平台下需要执行
$ CC_HOME/ cruisecontrol.sh ;如果是在windows平台下执行cruisecontrol.bat,成功后会出现如下的界面:
屏幕上出现Project commons-math started和BuildQueue started提示就说明已经正确的执行了CC。
在执行后,我们可以通过IE查看build情况,界面如下:
下面显示的是build的结果,现在的结果是BUILD FAILED,因为写这篇文档时网络不通,所以无法连接到apache上获得程序进行编译,就出现了错误。
我们可以看到,CC还提供了RSS订阅的功能,借助RSS阅读器,我们可以方便的获得最新的构建信息。界面如下:
好,我们见过了CC的使用过程,下面让我们通过一个例子来实现这个过程。
- 例子
在这个例子中,我们新建了一个项目,项目的名字叫hello,项目的结构如下:
main/src/java/com/test/qik/HelloMaven.java:示例的程序
package com.test.qik;public class HelloMaven { public static boolean main(String[] args) { System.out.println("Hello, maven!"); return true; } public void testa() throws Exception { System.out.println("test,可以发布到生产库的版本"); }}main/test/java/com/test/qik/HelloMavenTest.java:示例程序的单元测试用例package com.test.qik;import junit.framework.TestCase;public class HelloMavenTest extends TestCase { public static void main(String[] args) { } public HelloMavenTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Test method for 'com.test.qik.HelloMaven.main(String[])' */ public void testMain() { HelloMaven hm = new HelloMaven(); assertEquals(hm.main(null),true); }}target/:输出路径build.xml:ant的构建文件文件内容如下:============================================================== 正在删除源程序目录... 正在创建源程序目录... 正在删除测试程序目录... 正在创建测试程序目录... 正在删除编译程序目录... 正在创建编译程序目录... 正在删除lib目录... 正在创建lib目录... 正在删除单元测试报告目录... 正在创建单元测试报告目录... 从CVS中获取源码... 从CVS中获取lib目录... 编译程序... 运行单元测试用例... 生成单元测试报告... 发送测试报告邮件... 打包成jar文件...
- 总结
我们可以看到整个过程还是很简单的,通过CC,我们可以部分减轻CI的工作量,但可以看到核心的构建工作还是在project的build.xml中,如果CC能提供常见的模版就更好了(呵呵,我还是想偷懒)。另外CC的监控本地工作目录的功能有些弱智,比如我只写了"projects/hello",则它只认为在”project/hello”目录下的文件有更新才启动build过程,如果我们更新的是下面的子目录,则不能自动监控。