使用NAnt/MSBuild和SVN进行.NET项目构建自动化

4

我一直在尝试为我们的商店建立自动化构建流程。我已经阅读了很多关于这个问题的文章和指南,但没有一个真正符合我的具体需求。

我的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 文件夹并识别不在网络共享中的 tag
  2. 对于每个这样的 tag
    1. 检出 tag 文件夹
    2. 构建(使用 Release 配置)
    3. 复制生成的二进制文件到网络共享
    4. 搜索 .ndoc 文件
    5. 通过 NDoc 生成 CHM 文件
    6. 复制生成的 CHM 文件到网络共享
  3. 对于 trunk 的 HEAD 版本执行与第 2 步相同的操作

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

我想最困难的部分是检查尚未处理的标记 - 即搜索标记并将它们与网络共享中的项目目录结构进行比较。我不知道如何在任何构建工具(NAnt、MSBuild)中完成此操作。

您能否提供有关如何整体和详细处理此任务的指导?我不介意使用 NAnt、MSBuild 或两者都使用。我知道这可能相当复杂,但每个想法和 NAnt/MSBuild 片段都将是巨大的帮助。

谢谢!

3个回答

2
在NantContrib中,有一个SVN命令可以用来获取信息。你可以运行任何可以从SVN命令行中运行的查询,然后解析结果。因此,您可以执行标签搜索,将标签与网络共享上的文件夹匹配,然后使用svn-checkout命令为缺失的任何标签执行检出。完成后,对于每个项目文件夹,启动msbuild命令。
如果您想要自动化构建,另一种选择是创建分支而不是标签,因为看起来您正在创建版本而不仅仅是标签。如果您创建了一个分支,您可以使用自动化构建工具(如CruiseControl.net或TeamCity)监视您的存储库。然后,如果在分支或主干上检入文件,则可以让它启动您的自动化构建。
通过这两种方法,您应该能够处理它。如果您想要一些在其中实现了文档的构建脚本的好例子(包括zip和分发),请查看Castle Project:http://www.castleproject.org/。他们甚至使用了一些SVN命令来获取修订号等信息,以自动生成程序集信息文件。

1

0

你能否让NAnt或MSBuild调用Perl或其他脚本语言脚本来检查svn仓库并进行检出?如果你也可以从命令行运行构建,那么其他所有操作似乎都只是更多的脚本编写。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接