做了大半年的J2EE自动化框架搭建工作,到现在终于有了一些成果,目前完成了2个项目的自动化。
首先对“自动化”做一个解释。这里提到的“自动化”不仅仅是自动化测试,它包含了一个完整的自动化过程:代码同步>构建打包>部署>数据库更新(optional/可选)>测试;然后再对这个自动化过程做一个每天运行的schedule(运行时刻表),这些就是“自动化”的含义:日构建测试自动化系统,可以说是对Nightly-building的一个重要的延伸和补充。至于这个自动化系统的意义,仁者见仁,智者见智,不在我的讨论范围之内。
目前能google到的自动化工具,无论是商业化的还是开源的,其实都只是一个半自动化的工具:还是需要人去执行去完善。因此,我所做的这个自动化系统的其中一个目的就是提高自动化程度,最终实现全自动化。说回来,现在市面上自动化及衍生工具很多,足以挑得眼花缭乱,却不知道哪个比较适合自己用。因此,在这个探索系列里我尽量把我用过的一些好的工具一一做个介绍以抛砖引玉和大家探讨探讨。
想要实现自动化,首先需要的是自动化引擎:Automation Engine(这是我管它叫的,它的正名叫Continuous Integration Tool/持续集成工具)
年初的时候,一位大牛介绍了一个工具Hudson,于是我对Hudson做了一个了解,并把它和Anthill OS做个一个对比。
国外一位叫Mike Mason的牛人已经做过CruiseControl和Anthill之间的比较,可以参考:
http://mikemason.ca/2004/08/12/
Hudson和Anthill的主要区别
Hudson版本:1.206 (Hudson当前版本为1.262,已经比年初的1.206版本稳定很多,好很多)
Anthill os版本:1.8.1.303 (Anthill有两种版本:免费的是Anthill OS,收费的是Anthill Pro)
1. Anthill OS比较丑,页面简单也很少;Hudson用了Jelly和Ajax,页面华丽很多,比较人性化比较用户友好(user-friendly)。
2. Hudson功能更多更强大,它不仅支持Java工程还支持.NET。另外,它不但支持Ant,Maven,Bat,shell,python等脚本的构建任务,它的构建并行线程(Hudson管叫Executor:执行者)还可以配置,默认是2个executor。默认提供了较多可选的配置,除此之外,它还有个很强大的plugin功能,就像eclipse一样,可以无缝集成很多功能比如我目前在用的Sonar(以后会做详细介绍),还有Web自动化测试工具Selenium等等, 它的插件在hudson官网可以下载。
3. Hudson的安全管理做得不错,支持多种安全配置比如LDAP和Hudson自己的user DB等等,另外可以对各个用户/组做具体权限控制。比如:
4. Hudson可以自己Reload自己,而不用到App容器中重启Hudson它自己;
5. Hudson可以有Master/Slave架构,而且master和slave之间完全不受系统平台限制。本人做过Red Hat Linux和Windows的Master/Slave,用得不亦乐乎。太赞这个功能了。附件里有我的贴图。
另,网上有老外介绍他在Sun Soloris,Linux等多种不同平台上架设Hudson的master/Slave的经验。
6. 还有很多Hudson的优点不再枚举。(会在以后的工具介绍里慢慢介绍)
当然Hudson也有缺点,比如1.206版本非常不稳定,连保存Job(Hudson里的任务单元)配置都会经常出错。当前的最新版本在某些Plugin上不稳定, 比如Sonar。
具体请参考
http://hudson.gotdns.com/wiki/display/HUDSON/Home