【问题标题】:TFS2010 build deploys website even when integration tests fail即使集成测试失败,TFS2010 构建也会部署网站
【发布时间】:2011-10-21 04:16:07
【问题描述】:

我有一个我想在 TFS2010(服务器 2008R2)中执行的构建,但它没有按照我的意愿执行。我希望构建代码(我有一个门控签入策略)并且在成功构建时我想运行测试(单元和集成测试)如果(且仅当)所有测试都通过我希望将构建部署到 IIS7服务器。

开始设置时,我忽略了测试以查看构建和部署是否有效。在我完成这项工作之后,我现在正试图让测试失败,这必须阻止站点的部署。

在我的一项测试中(故意),我添加了 Assert.IsTrue(1 == 2);在日志中我可以看到构建失败,但站点仍然部署到我的 IIS 服务器。我的 MSBuild 参数设置为: /p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=RemoteAgent /p:MSDeployServiceUrl=http://111.11.11.111/msdeployagentservice /p:DeployIisAppPath ="MVC - Jack" /p:UserName=APP-107\Administrator /p:Password=xxxxxx /p:Configuration=Release

为什么即使测试失败并且我将构建定义设置为“禁用测试 = false”和“测试失败时构建失败”,部署仍然会发生

谢谢 杰克

附言。我可能有一个例子来解释如何修改 BuildProcessTemplate.xaml 以在测试失败时停止部署?

【问题讨论】:

    标签: integration-testing


    【解决方案1】:

    尝试了一整天后,我把这个部分鞭打了。我在http://www.codebadger.com/blog/post/2011/07/14/TFS-Team-Build-2010-Only-deploying-if-unit-tests-pass.aspx

    找到了一个与我的非常相似的样本

    现在我只需要弄清楚如何不让它构建两次。至少我现在在部署之前进行了单元和集成测试。

    【讨论】:

      【解决方案2】:

      DefaultBuildTemplate.xaml 中的 MSBuild Activity您的任何测试之前运行。因此,无论您的测试结果如何,它总是做同样的事情。要纠正此问题,请在“如果测试成功”分支的 DefaultBuildTemplate.xaml 中的测试之后添加一个 MSBuild Activity,然后在该 Activity 中进行部署。

      【讨论】:

      • 感谢您的提示。问题是我需要先构建测试项目作为构建的一部分,然后才能运行测试。我需要确定测试是否通过并基于此我需要部署或不部署。我会把它放在哪里?有关如何在 xaml 中执行此操作的任何链接?
      猜你喜欢
      • 2018-12-17
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2021-11-04
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多