3

我的经理要求我为我们的项目设置构建自动化。我决定使用 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

4 回答 4

2

既然你知道如何监控 /svn/tags/ProjectX/ 的变化,你可以让它触发一个 nant 脚本。该脚本可以针对 svn 执行命令(参见http://nantcontrib.sourceforge.net/release/0.85/help/tasks/index.html中的 svn 任务)以检查 /svn/tags/ProjectX/ 中的最新文件夹。从这里您可以使用这个 nant 脚本来使用 nant 任务在签出文件夹中调用 nant 脚本。

于 2009-07-13T15:43:08.967 回答
1

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

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

我真的很喜欢Martin Fowler 的这篇文章。当我开始使用持续集成时,它帮助了我很多。

于 2009-07-14T14:52:01.287 回答
0

感谢所有帮助的家伙。我决定试一试acloutier 的建议,并为每个项目制作静态nant 文件,这些nant 文件始终位于构建服务器上。

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

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

如果有人需要任何代码片段或说明,我很乐意在我开始工作时提供。谢谢您的帮助!

于 2009-07-16T00:49:56.777 回答
0

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

svn propget svn:externals blah

然后对其进行结帐,例如 svn checkout http://svn/repos/blah

在 CruiseControl.NET 中放

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

在该项目的配置中

于 2009-07-13T08:35:17.123 回答