使用Hudson持续构建web服务(代码更新、编译、发布、测试一体化)

   好久没维护博客了,今天上海的风好大,周末还奋战在前沿的同志们注意安全,废话不多说切入正题。
   前段时间负责做项目(服务端)自动化发布,也即check out project->compile->publish->test流程的一体化(想必搞服务段开发的同学们都经常要爬服务器做发布吧,看了这篇文章也许对你能有所帮助)。
   首先介绍下我使用的工具,hudson(持续集成引擎,对这个感兴趣的可以去研究下),msbuild(.net项目编译),svn client(代码的checkout)。
   由于包含server端发布以及client端Junit测试其实是两组项目,可以借助Hudson构件上下游项目,以webservice作为上游项目,完成发布后,执行下游test项目。

一.构件webservice:
1.创建自由风格项目:

完成创建后指定本项目的下游项目为Junit的测试项目


 
2.svn代码checkout:需使用到hudson中提供的svn插件(这个在系统/插件管理中可以找到)

Repository URL:填入从项目代码托管地址,正确后会需要svn登入的用户信息,填入即可。checkout 策略可以选择差量的更新,我使用的是删除后重新获取全量代码。

 3.编译前准备:

为了避免构件完成无法确定构建版本,所以我将svn文件版本作为了webservice服务dll文件版本。使用svn client的subWcRec.exe工具获取svn服务器上项目的相关信息,使用如下指令:

subwcrec.exe   模板文件路径  目标文件路径

subwcrec其实做的仅仅是将源文件中使用$WcRev$标识的属性(可以参看subwcrec指令介绍)svn文件版本进行了替换再输出覆盖目标文件。对于.net项目,可以创建template的Assembly文件,通过该指令获取到文件版本号后再覆盖参与编译的Assembly.cs文件(注意模板assembly文件不要参与编译,这仅仅是一个文本)。



 

4.编译:

我使用的是vs自带的msbuild进行的编译(Msbuild根据项目sln活csproj,执行编译类似于ant),使用msbuild前需要在hudson中安装msbuild插件。

通过configuration可以指定debug编译或是release编译


 

  5.发布:

f发布就比较简单了,将编译后的dll文件拷贝到website的bin目录下,iisreset即可。



 

二.Junit Test项目构建:

1.创建下游项目

2.svn代码check out

3.ant脚本执行



 

借助了Hudson完成了对项目自动构建部署,这个过程中还是学到蛮多东西的,希望这篇文章对大家有所帮助。

  欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

猜你喜欢

转载自gkqcz-126-com.iteye.com/blog/1827099