【问题标题】:Team City Prevent Build Step From RunningTeam City 阻止构建步骤运行
【发布时间】:2011-12-31 21:57:38
【问题描述】:

我正在使用 Teamcity 设置我的持续集成服务器,我的构建有三个步骤 (.NET/VS2010/MSBUILD)

  1. 使用 MSBUILD 构建我的解决方案。
  2. 运行 NUnit 测试。
  3. 使用 MSBUILD 对我的项目进行 Web 部署。

我要解决的问题是在任何测试失败时阻止第 3 步运行。这可能吗?

【问题讨论】:

  • 不幸的是,目前使用 teamcity youtrack.jetbrains.net/issue/TW-12194 似乎不可能做到这一点
  • 如果你的测试失败了,你的构建会失败吗?如果没有,那就是我要集中精力的地方。一旦你完成了这项工作,你可以选择将 Web 部署推送到一个单独的构建中,该构建取决于你的实际构建。我更喜欢这个选项,因为我认为它们是独立的进程,应该分别成功/失败。

标签: c# msbuild nunit continuous-integration teamcity


【解决方案1】:

您可以使用NUnit MsBuild Community task 执行此操作,方法是处理输出参数“ExitCode”,然后执行 MSBuild Error Task 取决于“ExitCode”或执行部署任务/目标取决于此条件,所以这取决于您。

错误任务:

根据评估的条件语句停止构建并记录错误。 错误任务允许 MSBuild 项目向记录器发出错误文本并停止构建执行

<!-- Build -->
<Build .... />

<!-- Run tests -->
<Nunit ....>
   <Output TaskParameter="ExitCode" 
           PropertyName="NUnitResult" />

<!-- Stop build in case of error whilst tests run -->    
<Error Text="Tests failed"
       Code="$(NUnitResult)"
       Condition="'$(NUnitResult)' != '0'"/>

<!-- Deploy -->    
<Deploy Condition="'$(NUnitResult)' != '0'"/ ... />

【讨论】:

  • 现在我在 TeamCity 中使用多个构建步骤。因此,虽然构建可能会失败,但该过程中的所有步骤都将被执行。我希望在 MSBuild 文件中完成这一切,但是我找不到有关将运行 Web 部署发布的构建任务的文档。我可能会尝试使用 Exec 任务运行 MSDeploy.exe。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多