【问题标题】:.NET projects build automation with NAnt/MSBuild + SVN.NET 项目使用 NAnt/MSBuild + SVN 构建自动化
【发布时间】:2010-10-06 12:39:04
【问题描述】:

很长一段时间以来,我一直试图弄清楚如何在我们的商店设置自动构建过程。我已经阅读了很多关于这个问题的帖子和指南,但没有一个真正符合我的具体需求。

我的SVN仓库布局如下

\projects
   \projectA (a product)
       \tags
           \1.0.0.1
           \1.0.0.2
           ...
       \trunk
           \src
              \proj1  (a VS C# project)
              \proj2
           \documentation

然后我有一个网络共享,每个项目(产品)都有一个文件夹,其中包含二进制文件、书面文档和生成的 API 文档(通过 NDoc - 每个项目可能在存储库中有一个 .ndoc 文件)对于每个历史版本(来自 tags SVN 文件夹)和最新版本(来自 trunk )。

基本上,我想在计划的批量构建中执行以下步骤:

  1. 检查项目的 SVN 文件夹并确定 标记网络共享中不存在
  2. 对于这些标签中的每一个
    1. 查看标签文件夹
    2. 构建(带有发布配置)
    3. 将生成的二进制文件复制到网络共享
    4. 搜索 .ndoc 文件
    5. 通过 NDoc 生成 CHM 文件
    6. 将生成的 CHM 文件复制到网络共享
  3. 执行与 2. 中相同的操作,但对于 trunk 的 HEAD 修订版

现在,问题是,我不知道从哪里开始。我不在存储库中保留 .sln 文件,但我可以用 MSBuild 文件替换这些文件,这些文件反过来构建属于特定产品的 C# 项目。

我想最麻烦的部分是检查存储库中尚未处理的标签 - 即搜索标签并将它们与网络共享上的项目目录结构进行比较。我不知道如何在任何构建工具(NAnt、MSBuild)中做到这一点。

您能否就如何整体和详细地处理这项任务向我提供一些指导?我不在乎我是使用 NAnt、MSBuild 还是两者兼而有之。我知道这可能相当复杂,但每个想法和 NAnt/MSBuild sn-p 都会有很大帮助。

提前致谢。

【问题讨论】:

    标签: .net svn msbuild build-automation nant


    【解决方案1】:

    在 NantContrib 中有一个 SVN 命令可以用来获取信息。您可以从 SVN 命令行运行的任何查询都应该能够使用,然后解析结果。因此,您可以进行标签搜索,将标签与网络共享上的文件夹相匹配,然后使用 svn-checkout 命令检查任何缺失的内容。完成后,为每个项目文件夹触发 msbuild 命令。

    如果您想要自动构建,另一种选择是创建分支而不是标签,因为看起来您正在创建版本而不是标签。如果您创建一个分支,您可以使用 CruiseControl.net 或 TeamCity 等自动构建工具来监控您的存储库。然后,如果在 Branch 或 Trunk 上签入文件,您可以让它启动您的自动构建。

    在两者之间你应该能够处理它。如果您想要一些构建脚本的一个很好的例子,这些脚本在其中实现了文档(带有 zip 和分发内容),请在此处查看 Castle 项目:http://www.castleproject.org/

    他们甚至使用一些 SVN 命令来获取诸如修订号之类的东西,以及用于自动生成装配信息文件的东西。

    【讨论】:

      【解决方案2】:

      UppercuT 可能是检查 NAnt sn-ps 的绝佳资源。

      http://projectuppercut.org/

      这里有一些很好的解释:UppercuT

      【讨论】:

        【解决方案3】:

        您能否让 NAnt 或 MSBuild 调用 perl 或其他一些脚本语言脚本来检查 svn 存储库并进行检查?如果您也可以从命令行运行构建,那么听起来其他所有内容都只是更多的脚本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-15
          • 2012-03-09
          相关资源
          最近更新 更多