自动构建系统

来源:互联网 发布:雷曼克斯写频软件 编辑:程序博客网 时间:2024/04/27 21:00

 

自动构建系统


附件:4,Stian Soiland-Reyes添加,最后一次由Stian Soiland-Reyes修改,修改日期:2010-11-12 

 

 

myGrid使用Hudson平台来自动构建Taverna的源代码。

 

在Hudson中,每一个来自Subversion的工程都应该对应着一个工程 (例如,每一个像net.sf.taverna.*这种形式的文件夹,在Subversion中都有一个trunk/tags/branches的结构目录。

 

在Hudson中把这些工程分组后, 你就可以大概的找到在Subversion中对应的类别,例如,engine,utils和ui.

 

自动构建

 


每一个工程应该用“Poll SCM”构建触发器组织起来,把poll设置成每隔5分钟获取一次。全系统的宽限期(构建时间)4分钟一次。这样做的意思是:对于每一个工程,Hudson会每隔5分钟做一次svn update来看看在Subversion中是否有代码被改变了,如果改变了,再等4分钟,做一次工程的构建。

 

另外,Hudson能够理解依赖,因此任何一个工程如果依赖一个最新构建的工程,马上会被重新构建一次--这种方式将会递归的进行

 

由于Hudson使用一般的mvn clean install的命令,任何编译失效或单元测试失败都会被捕捉,这些错误在屏幕上会以一个黄色或者红色的小球表示。

 

每日构建


 

 

另外,除了在Subversion提交时会自动构建外,系统也会进行每日构建。 构建工作从虚拟的Hudson工程net.sf.taverna.t2.build.full开始。这个工程会在每晚03:41 开始构建,有一个 "构建其他工程"的选项,让你可以转到其他任何一个工程。这也意味着你可以通过在工程上的按钮“Build Now”来强制重新构建工程。

 

不幸的是,Hudson也有一个“编译其他依赖‘我’的工程”逻辑,它的意思是,有些工程在晚上会被构建2次或更多。

 

 [net.sf.taverna.t2.builds.taverna-workbench.maintenance] 工程每晚都会运行,它的工作是从maintenance分支上把Taverna 构建树彻底的签出,然后编译。这样做确保了Taverna的所有代码都走了一遍,同时,也会在Maven的私有库上构建以验证代码没有依赖Hudson中的其他构建。

 

上面的工作等同于 net.sf.taverna.t2.builds.taverna-workbench,只是该工程放在了trunk构建树上(build tree).

 

maintenance构建触发器是一个单独的Hudson构建[net.sf.taverna.t2.taverna-workbench.nightly],它会产生一个Nightly快照 - 一个那晚构建好的完整的、可执行的Taverna发行版。但是,只有在[workbench-distro]模块中构建的发行版本可以被下载使用,这时候的版本比较典型的命名方式如taverna-nightly-2.3-SNAPSHOT-20101111-bin.zip。

 

Maven快照发布


 

一旦成功构建,net.sf.taverna.t2.builds.taverna-workbench.maintenancenet.sf.taverna.t2.builds.taverna-workbench将会发布快照artifacts到myGrid的Maven快照库中。

 

因此,只要构建成功,最新的快照版本就可用了,反过来说,如果有任何模块构建失败或者测试失败(比说因为API改变),不会有任何改变的artifacts会发布出去-这样保证了Maven 用户总是能从快照库中得到“最近成功构建”的artifacts。

 

大多数Maven的安装程序,如果超出了24小时的过期时间,都会更新快照依赖。当然,你也可以改变这种设置。如果你在Eclipse中使用m2eclipse的话,你可以强制这种更新,方法是在工程上右击出现的菜单中选择Maven -> Update snapshots

 

用户访问


 

如果你是myGrid-developer组成员的话,你可以使用
跟Wiki和我们的issue tracker Jira一样的账户
登录访问Hudson

 

 

 

 

 

 

 

 

原创粉丝点击