论坛首页 Java企业应用论坛

【讨论】自己实现持续集成

浏览 2144 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-09  

最近在思考一个问题,就是如何自己实现一个持续集成的工具,不需要hudson、cruisecontrol之类的复杂系统。

问题源于我的一个很朴素的想法:如何在每天早上起床的时候,知道项目是否编译通过、单元测试是否ok、覆盖率是多少。

 

几个功能点:

1、自动更新代码

2、自动编译,并判断成功失败

3、自动跑单元测试,并判断成功失败

4、生成覆盖率

5、发送邮件

6、自动定时执行

 

第1条比较简单,svn update就可以了。

第2条mvn clean package即可。

第3条,mvn test也成。

第四条有两个选择,cobertura或者是emma,同时做了mvntest,发现emma有一个汇总的信息,cobertura没有。hudson好像用的是coebrtura。

第五条也比较简单。

最后一个用crontab就可以了(windows可以用at)。

但是发现几个问题:

1、需要注意所有的路径改成绝对路径,否则无法执行,crontab下root的环境变量配置一般跟自己用的账户差别比较大。

2、在crontab下,svn update之类需要交互的命令无法执行,囧,expect可以模拟,但是目标机器不支持。

一个简单的办法是svnkit,找到一个svntask的ant小工具,简单配置几句即可。好像svn本身就有类似工具的ant task支持。

3、项目里有多个project,但是test都写在其中的一个project中。mvn emma和mvn cobertura出来的结果都是每个项目各自的test的结果,

所以,出了有test的那个项目外,都是0,没想到什么好办法。虽然emma本身支持merge,但是mvn emma好像做的不太好。emma的eclipse 插件版本,eclemma支持的就非常好。

用了个笨办法,直接在build之前,把test代码拷贝到相应的项目里,这样,覆盖率就有了。

 

 

 

   发表时间:2012-01-09  
我觉得hudson要比你说的简单
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics