如何设置TeamCity for Build - >测试 - >部署流程

时间:2014-03-17 10:47:42

标签: unit-testing build msbuild continuous-integration teamcity

我已使用Git配置TeamCity以获取我的ASP.NET MVC项目。

我的解决方案包含网络应用和相应的单元测试:

MY_SOLUTION.sln:

 - WebAppProject
 - SomeCoreLibrary
 - SomeCoreLibraryTests 
 - OtherProjects...

我在TeamCity中配置的步骤如下:

  1. 使用NuGet获取外部包
  2. 构建解决方案并进行部署
  3. 运行单元测试
  4. 运行自动化测试(使用Selenium)
  5. 我希望在构建之后但在部署之前运行单元测试,并在单元测试失败时停止部署。目前,部署是在使用以下命令行参数构建之后完成的:

    /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
    

    谢谢, 约努茨

2 个答案:

答案 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)

我不熟悉您使用的工具。但是,我通常会为项目使用一些构建配置:

  1. 构建配置,在更改时触发,包含以下步骤:获取最新的源代码和包,构建/编译和单元测试。然后为部署任务创建工件。
  2. 构建配置以部署到开发服务器,由(1)成功完成并使用工件(通过依赖)触发。
  3. 为计划运行频率较低的长时间运行(例如集成/功能)测试构建配置。
  4. (2)的一个优点是,如有必要,您可以重新部署构建/工件,而无需先重建工件。此外,如果您有多个代理,(2)和(3)可以彼此独立运行。

    此外,您还可以标记已通过开发检查的build in(2),然后在另一个构建配置中使用其工件将其部署到测试服务器等。