【问题标题】:CruiseControl.net submit a file to SVN after a task has changed itCruiseControl.net 在任务更改后向 SVN 提交文件
【发布时间】:2010-07-21 05:51:39
【问题描述】:

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

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

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

我该怎么做才能让它不循环?我可以添加更新 SVN 任务吗?这会有帮助吗?

【问题讨论】:

  • 我尝试在提交任务之后添加一个更新任务,但是没有帮助,每次运行它仍然会发现修改。
  • 我尝试将 SVN 设置为使用 revisionNumbers,因为我正在更新我的工作目录,这将阻止它构建,但是它仍然在每个间隔触发......

标签: cruisecontrol.net


【解决方案1】:

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

<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

【讨论】:

  • 我只是想知道这是否不会再次导致构建触发,从而创建一个无限循环的递增和重新构建同一个项目?
  • 这确实会循环构建服务器。现在每 5 分钟进行一次完整构建(使用增加的版本)。我该怎么做才能使任务不会触发 CruiseControl.NET 构建?
  • 你提交的文件是什么?如果是 dll,那么您能否创建一个仅包含此文件的新分支或新存储库。然后,您将该分支/存储库映射到新目录,执行将 dll/文件复制到该目录的任务,然后对该文件运行提交。然后,您的其他项目将不得不监视该文件的新分支/存储库。
  • 我正在为每个项目(已修改)提交 assemblyversion.cs 文件
  • Rekreativc - Damir's Corner 博客对您有帮助吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    This question may help.

    因为VS的依赖,我放弃了设置和部署项目。

    【讨论】:

    • 关于设置和部署项目真是太可惜了......现在会调查这个问题,谢谢。
    • 我现在使用 WiX 生成 .msi 设置。 VS 集成的一些粗糙边缘,但几乎没有痛苦。
    【解决方案4】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      相关资源
      最近更新 更多