最近在研究各种持续集成工具的使用,比较了目前几个主流的ci工具,比如:cruise control、hudson、continuum后,考虑到continuum是ci的新秀,和maven又同属于一个组织(apache software foundation),想必有天然的兼容性(纯属个人猜想),决定先研究apache continuum,经过3天的研究和实验,终于完成了持续集成中一些基本功能的使用配置和测试。说句实话对于apache continuum的研究还是要有些基础的,首先需具备一定的maven知识;其次是有些e文水平,因为continuum是ci 新秀,相关实践人员发布的文章较少,由此是中文文章少的可怜,所以主要是参照其官方网站。如:http://continuum.apache.org/docs/1.3.6/index.html。现在开始一步步实践continuum吧!
1.环境准备
既然ci依赖于maven,首先要下载maven,并进行配置。maven下载地址http://maven.apache.org/download.html,为了方便部署建议下载继承了容器环境的bin包。版本选择2.2.1 ,windows用户下载apache-maven-2.2.1-bin.zip,linux用户下载apache-maven-2.2.1-bin.tar.gz。解压包后将maven bin目录添加的系统path环境变量中,这个便于ci能找到maven命令。
下载continuum包,地址:http://continuum.apache.org/download.html,笔者研究时文档版本是1.3.6 GA,1.4.0(beta)版本已出,也下载1.4.0试用了,可惜果然是beta,就发现了一个邮件通知发送时出现NullPointerException错误。所以以1.3.6为例介绍。windows用户下载apache-continuum-1.3.6-bin.zip包,linux下载apache-continuum-1.3.6-bin.tar.gz包,下载后解压到相应目录。
2.修改配置
windows中continuum的目录结构如下: linux目录结构如下:
a)修改集成的jetty服务的端口号
找到conf文件夹里的jetty.xml配置文件,搜索到jetty.port属性,修改端口号为你所想要的,默认是8080;
b)设置邮件服务配置用于发送集成情况邮件给组员
continuum除了支持mail方式还支持 IRC Jabber MSN Wagon方式,我们已常用的mail方式为例。通用在上面的jetty.xml文 件里找到如下文本段:
<New class="org.mortbay.naming.factories.MailSessionReference">
<Set name="user">continuum</Set>
<Set name="password">continuum@yeah</Set>
<Set name="properties">
<New class="java.util.Properties">
<Put name="mail.smtp.host">smtp.yeah.net</Put>
</New>
</Set>
</New>
设置你所用的邮件服务的user(建议在贵公司的邮箱里开通一个continuum@company.com邮箱作为邮件通知的服务邮箱, 如果不方便可到支持smtp协议的邮件服务商那里申请一个帐号),设置所申请邮件帐号的password,在设置mail.smtp.host为服务 邮箱的host,我申请的是网易的yeah邮箱,所以mail.smtp.host为smtp.yeah.net。还有重要一点:很多邮箱需要登录验证,所以 要在<Put name="mail.smtp.host">smtp.yeah.net</Put>一行下面添加一行<Put name="mail.smtp.auth">true</Put> 配置。
上述地方设置,邮件设置还差一步就ok了,在continuum的目录apps/continuum/WEB-INF/classes/META-INF/plexus/application.xml文件里找到下面两行:
<from-mailbox>continuum@yeah.net</from-mailbox>//设置continuum发送的通知邮件显示的邮箱帐号,可以和发送有不一致哦!
<from-name>continuum-uf-phospher</from-name>//显示通知邮件的发件人
设置这两处后,邮件设置即宣告完成。就等着收邮件吧。
3.添加项目
前两步工作完成后,到bin目录下启动continuum ,continuum支持console 和 后台运行模式 ,在window cmd 命令行里键 入continuum console/start 命令启动服务,linux 键入 ./continuum console/start启动服务。在浏览器里键入 http://yourserverip:yourport/continuum迎来的一个见面是设置admin账户,这是你自己的事情了,笔者就不多说了。其次是一般路径设置,可以采用默认设置,等以后你熟悉了再修改。
首先要在你的项目pom文件中添加这段声明:
<scm>
<connection>scm:svn:http://61.190.67.236:81/svn/repository/SGPool/trunk</connection><!--svn是scm的类型,也可以是cvs-->
</scm>
设置完成,进入最关键一步,请准备一个简单的maven项目,并checkin 到scm系统,笔者采用的是svn。然后点击左边菜单的添加添加Maven 2.0+项目按钮,页面如下图:
各项设置:
pom url指向你项目的主pom.xml文件的url,格式如下: scm:svn:http://61.190.67.236:81/svn/repository/mvnapp/trunk,
用户名和密码,如果你的scm有用户名密码就要输入你的账户信息
项目分组先选择default project group
构建定义模板,选择default maven 2 template 和你建项目对应哦
添加项目后,就可以构建项目了。先可以按照默认计划时间去自动构建,continuum 默认执行maven pom的默认构建目标。
如果想要更高级的应用,如多个子项目的构建,修改执行计划。你可以自己研究,或参考笔者后续的博文。
4.添加通知人员
添加通知人员有两种方式,在continuum 的项目主页里的通知人员出,逐个添加即可,可以设置被通知人员接收邮件类型。这样每次构建结果都会按照你设置的类型发给被通知人员了。
5.生成站点
continuum处理默认的构建目标定义外,还可以自定义很多构建目标,其中很重要的一点就是生成包含了各种测试报告的项目 site了。
可以添加clean site-deploy 构建定义。要实现自动发布站点的目标,还要在pom.xml中添加如下声明:
<distributionManagement>
<site>
<id>SGPool.website</id>
<url>dav:http://61.190.67.236:81/site/SGPool</url>
</site>
</distributionManagement>
从配置我们可以看出,有个dav的东西,这个表明部署使用的协议为dav,这就要求在你的站点服务软件那里要开放dav功能,如 apache ,iis等web服务器都对此有支持。具体配置方式可以google下,不在此详述了。
经过这5步,continuum的应该有的基本目标就实现了,更多更高级的特性研究,待续中......
最后强调一点,pom.xml文件用utf-8格式保存,否则continuum显示pom文件中的诸如开发者,项目名的中文信息是乱码
有任何问题都可以mail to hbqian@cn.ufintiy.com 或 qianhoubing@163.com , qq:158681110 随时接受你的任何问询。