现在已经有一段时间了,我一直试图弄清楚如何在我们的商店设置自动构建过程。我已经阅读了很多关于这个问题的帖子和指南,但没有一个真正适合我的具体需求。
我的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文件) 每个历史版本(来自标记 SVN文件夹)和最新版本(来自 trunk )。
基本上,我想在计划的批量构建中做的是这些步骤:
现在,麻烦的是,我不知道从哪里开始。我没有将.sln文件保存在存储库中,但我可以用MSBuild文件替换它们,而MSBuild文件又构建了属于特定产品的C#项目。
我想最令人不安的部分是检查尚未处理的标签的存储库 - 即搜索标签并将它们与网络共享上的项目目录结构进行比较。我不知道如何在任何构建工具(NAnt,MSBuild)中执行此操作。
您能否向我提供一些关于如何整体和详细地处理此任务的指示?我不在乎我是否使用NAnt,MSBuild或两者兼而有之。我知道这可能相当复杂,但每个想法和NAnt / MSBuild片段都会有很大的帮助。
提前致谢。
答案 0 :(得分:2)
在NantContrib中,您可以使用SVN命令获取信息。您可以从SVN命令行运行的任何查询都可以使用,然后解析结果。因此,您可以执行标记搜索,将标记与网络共享上的文件夹匹配,然后使用svn-checkout命令对任何缺少的标记执行检查。完成后,为每个项目文件夹触发msbuild命令。
如果您想要自动构建,另一种方法是创建分支而不是标记,因为它看起来像是创建版本而不是标记。如果您创建一个分支,您可以拥有一个自动构建工具,如CruiseControl.net或TeamCity monitory您的存储库。然后,如果在分支或主干上签入文件,您可以启动自动构建。
在两者之间你应该能够处理它。如果您想要一些构建脚本的好例子,这些脚本中包含了文档(包含zip和分发内容),请在此处查看Castle项目:http://www.castleproject.org/
他们甚至使用一些SVN命令来获取修订号以及不自动生成assymbly信息文件的内容。
答案 1 :(得分:1)
答案 2 :(得分:0)
您是否可以让NAnt或MSBuild调用perl或其他脚本语言脚本来检查svn存储库并执行检出?如果你可以从命令行运行构建,那么听起来其他一切只是更多的脚本。