锁定老帖子 主题:【讨论】自己实现持续集成
精华帖 (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代码拷贝到相应的项目里,这样,覆盖率就有了。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-01-09
我觉得hudson要比你说的简单
|
|
返回顶楼 | |
浏览 2144 次