我已使用Git配置TeamCity以获取我的ASP.NET MVC项目。
我的解决方案包含网络应用和相应的单元测试:
MY_SOLUTION.sln:
- WebAppProject
- SomeCoreLibrary
- SomeCoreLibraryTests
- OtherProjects...
我在TeamCity中配置的步骤如下:
我希望在构建之后但在部署之前运行单元测试,并在单元测试失败时停止部署。目前,部署是在使用以下命令行参数构建之后完成的:
/p:VisualStudioVersion=11.0
/p:DeployOnBuild=true I want this to be done only after SomeCoreLibraryTests.dll unit tests have passed
/p:PublishProfile=MyWebDeploy
/P:AllowUntrustedCertificate=True
/P:UserName=username_here
/P:Password=password_here
谢谢, 约努茨
答案 0 :(得分:1)
我在类似情况下所做的是使用RoboCopy将新网站镜像到部署路径中。这不适合你吗?
P.S。:如果你确实这样做了,我建议在TeamCity中进行性能改进(这将允许你与自动化测试并行运行单元测试):
我假设您正在为所有这些步骤使用单个构建配置。如果是这种情况,我建议使用Dependent Build configurations来区分不同的问题。我可以在我的开源项目中看到一个例子:
http://teamcity.codebetter.com/viewLog.html?buildId=112432&buildTypeId=bt1075&tab=dependencies
以Guest身份登录并展开Testeroids :: Publish到NuGet树节点以可视化构建流程。
要实现这一点,基本上你会在工件中传递构建步骤的结果(例如,将生成的二进制文件从编译传递到单元测试)。您可以通过使用依赖构建获得多项内容:若干独立构建步骤可以在不同代理上并行运行,另外如果您的构建步骤之一由于外部因素而失败(例如,假设发布失败,因为网络已经失败)你可以再次触发构建,它只会重建失败的步骤。
答案 1 :(得分:0)
我不熟悉您使用的工具。但是,我通常会为项目使用一些构建配置:
(2)的一个优点是,如有必要,您可以重新部署构建/工件,而无需先重建工件。此外,如果您有多个代理,(2)和(3)可以彼此独立运行。
此外,您还可以标记已通过开发检查的build in(2),然后在另一个构建配置中使用其工件将其部署到测试服务器等。