使用CruiseControl.Net构建标记项目

时间:2009-07-13 07:36:21

标签: svn cruisecontrol.net nant tagging

我的经理要我为我们的项目设置构建自动化。我决定使用CruiseControl.Net作为我们的持续集成服务器,因为其他一些团队成员对它有一点经验,我没有 - 这就是我很乐意承担这项任务的原因。

我们使用Subversion作为我们的存储库,最终目标是在每次标记项目时实例化构建。例如:

将文件夹添加到svn:// svn / tags / ProjectX /,例如svn:// svn / tags / ProjectX / JulyCheckPoint 应该将新添加的标签(svn:// svn / tags / ProjectX / JulyCheckPoint)签出到本地目录(D:\ temp \ tags \ ProjectX \ JulyCheckPoint)并运行一个nant文件(D:\ temp \ tags \ ProjectX \ JulyCheckPoint \ nant.build)

我知道CruiseControl能够监视svn:// svn / tags / ProjectX /进行更改,但我不确定如何检查构建服务器本地磁盘的最新标记并运行nant.build如果我不知道最新标签的名称。我做了一些谷歌搜索,并相信svn post-commit钩子可能是我应该研究的东西。

我希望所有这些都有意义,如果您需要进一步的细节/说明,请告诉我。任何指导/建议将不胜感激。

干杯。

4 个答案:

答案 0 :(得分:2)

由于您知道如何监视/ svn / tags / ProjectX /进行更改,因此可以让它触发一个nant脚本。此脚本可以对svn执行命令(请参阅http://nantcontrib.sourceforge.net/release/0.85/help/tasks/index.html中的svn任务)以检出/ svn / tags / ProjectX /中的最新文件夹。从这里,您可以使用此nant脚本使用nant任务调用签出文件夹中的nant脚本。

答案 1 :(得分:1)

这不能回答你的问题,但我很好奇为什么你选择用标签而不是HEAD构建?

通常,每次对源代码存储库进行更改时,都会使用持续集成来构建项目代码,以便及早发现问题。

我非常喜欢Martin Fowler的this article。当我开始使用持续集成时,它对我帮助很大。

答案 2 :(得分:0)

我认为你能做到这一点的唯一方法就是使用svn:externals我认为并设置一个指向你标签的存储库。

svn propget svn:externals blah

然后结账,例如svn checkout http://svn/repos/blah

在CruiseControl.NET中放

<checkExternals>True</checkExternals>
<checkExternalsRecursive>True</checkExternalsRecursive>

在该项目的配置中

答案 3 :(得分:0)

感谢所有帮助伙计。我决定为每个项目提供acloutier的建议和静态nant文件,这些nant文件总是位于构建服务器上。

CruiseControl.Net(在构建服务器上设置)监视每个项目的标记存储库并触发相应的静态nant文件。然后,这个nant文件运行一些C#代码,用于确定svn:// svn / tags / ProjectX / location中最后添加的文件夹的名称。

知道最后添加的文件夹的名称允许我将svn:// svn / tags / ProjectX /下最近标记的项目svn-checkout到本地位置并在项目中运行nant文件。

如果有人需要任何代码片段或说明,我很乐意在我上班时提供它们。谢谢你的帮助!