2009-07-13 53 views
3

我的经理要求为我们的项目设置构建自动化。我决定使用CruiseControl.Net作为我们的持续集成服务器,因为其他一些团队成员对此有一些经验,但我没有 - 这就是为什么我很乐意执行此任务。使用CruiseControl.Net构建一个已加标签的项目

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

添加一个文件夹的svn:// SVN /标签/ projectX创建/例如svn:// SVN /标签/ projectX创建/ JulyCheckPoint 应签新添加的标记(SVN:// SVN /标签/ ProjectX/JulyCheckPoint)并运行一个nant文件(D:\ temp \ tags \ ProjectX \ JulyCheckPoint \ nant.build)

我知道CruiseControl是能够监视svn:// svn/tags/ProjectX /进行更改,但我不确定如何将最新标记签出到构建服务器的本地磁盘,并在内部运行nant.build,如果我不知道最近标签的名称。我做了一些Google搜索,并相信svn post-commit挂钩可能是我应该研究的内容。

我希望这一切都有道理,请让我知道,如果你需要进一步的细节/澄清。任何指导/意见将不胜感激。

干杯。

回答

0

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

svn propget svn:externals blah 

,然后做一个结账针对如svn签http://svn/repos/blah

在CruiseControl.NET把

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

在你的配置为该项目

2

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

1

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

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

我真的很喜欢Martin Fowler的this article。当我开始使用持续集成时,它给了我很多帮助。

+0

谢谢,我一定会看看那篇文章。我想到的下一步就是每晚实施干线建设(为了您提到的目的)。 最终,通过从标签构建,我希望构建标记的构建管理器/开发人员能够获得包含标记项目的.msi安装包(查看WiX)。这样,我们所达到的任何里程碑都可以通过简单地标记特定版本来构建到发行版安装中。他们有什么缺点,我忽略了吗? – Boris 2009-07-16 00:29:50

+0

这听起来像是一个合理的请求,但它并不适合CC.Net的工作方式。 在这种情况下,我会建议有第二个CC.Net项目称为发布版本,由管理员运行。这个版本将创建MSI,然后标记主干。如果需要修改标记的代码,则可以分支并创建一个新的CC.Net项目以从该分支构建。 这是一个非常简单的概述,但希望能给你一些想法,让你开始。 – MikeD 2009-07-16 11:02:28

0

欣赏所有的帮助帅哥。我决定给acloutier的建议一个镜头,并为每个项目制作静态文件,这些nant文件总是位于构建服务器上。

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

了解最近添加的文件夹的名称可以让我svn-checkout svn:// svn/tags/ProjectX /下最近标记的项目到本地位置,并在项目中运行nant文件。

如果任何人需要任何代码片段或澄清,我会很乐意为他们提供当我开始工作。谢谢您的帮助!