我一直在尝试为我们的商店建立自动化构建流程。我已经阅读了很多关于这个问题的文章和指南,但没有一个真正符合我的具体需求。
我的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)。
基本上,在计划的批处理构建中,我想要执行以下步骤:
- 检查项目的 SVN 文件夹并识别不在网络共享中的 tag
- 对于每个这样的 tag
- 检出 tag 文件夹
- 构建(使用 Release 配置)
- 复制生成的二进制文件到网络共享
- 搜索 .ndoc 文件
- 通过 NDoc 生成 CHM 文件
- 复制生成的 CHM 文件到网络共享
- 对于 trunk 的 HEAD 版本执行与第 2 步相同的操作
现在,问题是,我不知道从哪里开始。我没有在存储库中保留 .sln 文件,但我可以用 MSBuild 文件替换它们,这些文件会构建属于特定产品的 C# 项目。
我想最困难的部分是检查尚未处理的标记 - 即搜索标记并将它们与网络共享中的项目目录结构进行比较。我不知道如何在任何构建工具(NAnt、MSBuild)中完成此操作。
您能否提供有关如何整体和详细处理此任务的指导?我不介意使用 NAnt、MSBuild 或两者都使用。我知道这可能相当复杂,但每个想法和 NAnt/MSBuild 片段都将是巨大的帮助。
谢谢!