CruiseControl.net在任务更改后向SVN提交文件

时间:2010-07-21 05:51:39

标签: cruisecontrol.net

我有一个CruiseControl.NET驱动的构建服务器和一个exec任务,在构建之前增加项目的程序集版本。我想知道,有没有办法(我不知道的CruiseControl.NET任务)将修改后的文件提交回SVN?

我需要它,所以当手动构建安装项目时(我使用的是msbuld,因此不会连续构建)所有构建文件在部署时都将具有正确的程序集版本。哦,如果有人知道如何建立设置和在没有安装Visual Studio的构建服务器上部署项目,我很想知道!

编辑:感谢Jonathan Stanton,现在更新正常运行,但是它会产生另一个问题......构建服务器现在循环(在更改时它会更新程序集版本并提交文件。这会导致onModify触发触发,以便更新程序集版本并提交文件...)。

我能做什么,不会循环?我可以添加更新SVN任务吗?这会有帮助吗?

4 个答案:

答案 0 :(得分:2)

以下任务会将文件提交回源仓库。

<exec executable="svn.exe">          
    <buildArgs>commit -F <file you want to commit back> --username USER --password PASS --no-auth-cache --non-interactive --message 'CruiseControl.net build %CCNetLabel%'</buildArgs> 
    <buildTimeoutSeconds>10</buildTimeoutSeconds>
</exec> 

以下链接可能有用:

我希望这有助于

乔纳森

修改

还有另一种方法可以做到这一点,即允许CC.NET在DLL中设置构建版本。有关如何在Damir's Corner进行的演练,名为Setting Up SVN and CC.NET for .NET Development

答案 1 :(得分:2)

有关如何cfg cc以避免构建周期的stackoverflow的另一个答案: How to checkin code during the build

答案 2 :(得分:0)

This question may help

由于VS依赖,我放弃了设置和部署项目。

答案 3 :(得分:0)

在Jonathan在他的回答中链接的post on my blog中,我描述了我的设置,它在构建过程中没有做任何提交。我不是在构建期间增加构建号,而是使用Subversion中的修订号。我更喜欢这种方式,因为根据构建号,我可以轻松地检索用于构建构建的源。

在我的情况下,所有构建都是在CruiseControl.NET上完成的。在这种情况下,手动构建设置更加棘手,因为Subversion中的文件没有正确的内部版本号。您可以通过使用CruiseControl.NET构建中已修改的文件来解决此问题,并使用它们来构建您的设置。或者您也可以连续构建设置。

如果这对您不起作用,您应该采用DilbertDave建议的Filtered Source Control Block路径。只需将您的AssemblyInfo.cs文件(或您在构建过程中修改的任何其他文件)放在exclusionFilters中即可摆脱构建循环。