我们目前正在运行Jenkins(Hudson)CI服务器来构建和打包我们的.net Web项目和数据库项目。一切都很好但我想开始编写单元测试,然后只有在单元测试通过时才传递构建。我们使用内置的msbuild任务来构建Web项目。使用以下参数......
MsBuild Version .NET 4.0
MsBuild Build File ./WebProjectFolder/WebProject.csproj
Command Line Arguments ./target:Rebuild /p:Configuration=Release;DeployOnBuild=True;PackageLocation=".\obj\Release\WebProject.zip";PackageAsSingleFile=True
我们需要对我们的代码运行自动化测试,这些代码在我们的机器上构建时可能会自动运行(可能是构建后事件),但是当Jenkins为该项目构建时也会运行。
如果你像这样运行它不会构建单元测试项目,因为web项目不引用测试项目。测试项目将引用Web项目,但我很确定这将是我们的自动构建,因为它们主要用于构建和打包我们的部署。运行这些测试应该是自动构建和打包过程中的一个步骤。
我们希望在构建主项目时运行测试。但是,对于针对测试项目运行的Web项目添加后期构建事件不起作用,因为Web项目不引用测试项目并且不会触发此项目的构建。我可以继续...但这就够了......
我们花了大约一个星期试图让这项工作很好但没有成功。如果您觉得可以得到更好的回复,请随意编辑它......
答案 0 :(得分:9)
在詹金斯/哈德森,有很多工作是很好的。一些用于编译触发版本控制更改,一些用于由成功构建触发的运行(单元)测试,一些用于执行更多测试(整合)由成功的早期测试划分,一些用于部署,通过成功通过所有测试触发。
查看连接,构建管道,参数化触发器等插件,以帮助解决这个问题。
通过使用多个节点,这也可以使事情并行发生。试图在一份工作中塞满所有东西是不可取的。