使用SVN自动构建分支

时间:2009-08-06 16:09:10

标签: svn continuous-integration build-automation cruisecontrol.net nant

我要做的是为存储库中的所有分支机构提供CI和自动构建。我希望这些Web应用程序的每个构建都拥有它自己的项目,并作为虚拟目录(或等效的)放置在分支站点上。能够创建一个新的分支并让它自动启动持续集成和构建过程,这将是非常好的。在IIS中添加一个新的虚拟目录并不是什么大不了的事情,如果其他人只是将其放置到位,我就可以这么做了。

例如:

  

http://branch.domain.com/branch101/

     

http://branch.domain.com/otherBranchName/

目前,我正在使用SVN,Nant和CruiseControl.Net,但如果情况需要,我会打开另一个持续集成服务器或构建脚本。

3 个答案:

答案 0 :(得分:3)

这可以做到,但很多都取决于你的构建脚本。如果你告诉cc.net监视顶级svn文件夹,例如你有项目监视器:

http://myserver.com/svn/project而不是http://myserver.com/svn/project/trunk。如果在http://myserver.com/svn/project中看到任何更改,它将启动构建。

现在,由构建脚本决定哪些源已过期或是否有要构建的新分支。构建脚本将为任何新分支创建新的VDir。

另一个选择是建立一个cc.net项目,除了向cc.net添加新项目之外什么都不做。 (称之为BranchBuilder项目)我将利用cc.net中的预处理器并拥有一个顶级.config文件,该文件仅包含trunk和每个分支的项目。分支构建器项目将监视svn上的根路径。如果它看到任何更改,它将查看自上次构建以来是否有任何新分支。如果有,则可以为该分支创建ccnet-branchname.config文件,创建vdir,然后使用其他include更新ccnet.config根文件。

ccnet配置更新后,cc.net将识别配置文件已被修改并重新加载配置添加新的分支项目。该分支项目将开始运行并构建新分支。

答案 1 :(得分:1)

我不明白真正的问题。无论如何,我建议你哈德森(http://hudson-ci.org/)。

它易于使用。 使用XML文件很容易配置。 它有远程API。

答案 2 :(得分:1)

对于基于分支的自动设置持续集成项目,我不认为你想要什么。但是,如果您的分支机构非常标准并且没有大幅改变,那么编写一个PowerShell脚本(或您喜欢的任何脚本语言)来设置新项目将非常容易。

我怀疑是否需要,当我们在CC.NET中分支时,复制中继项目并搜索和替换所需字段只需不到一分钟。我们遇到问题的唯一一次是当我们在构建期间使用自定义脚本时,如果存在这些脚本,我们也需要修改它们,但这将在任何持续集成系统中发生。

相关问题