我对构建自动化和持续集成还比较新,但已经对这个主题进行了广泛的研究。
首先是问题:假设我有一个未管理的Visual C++ .sln文件,并且可以使用MsBuild构建它,那么我应该选择哪个现代的构建工具,以便能够轻松执行构建前/后步骤?
我不想要像Ant、Nant、make这样“旧”的构建工具,因为它们的XML混乱。我希望找到一些可以让我用人类可读的方式自由表达我的意图的东西。根据我的研究,似乎Waf、Scons和Rake可能符合要求。
我的环境背景如下: 我的源代码控制是Subversion。 我的单元测试框架是GoogleTest,它生成JUnit兼容的XML文件。 我选择了JIRA作为我的跟踪工具。 我选择了TeamCity作为我的CI服务器。 我使用Visual Build来构建我的.sln文件。
我想编写一个简单的构建脚本(可从我的CI服务器调用),它将:
1)创建一个CI服务器工作目录。
2)从SVN检出代码。(我的仓库设置为使用svn:externals从我的其他仓库拉取依赖项)
3)运行Visual Build构建文件以构建.sln中的所有项目/平台组合。
4)运行静态代码分析/动态代码分析工具
5)从MsBuild收集结果(无论是编译失败、静态/动态代码分析警告还是单元测试失败等),用于CI服务器。
6)CI服务器记录这些并将其链接到JIRA。