2011-06-09 36 views
9

我目前有一个自定义工作流活动,在解决方案编译成功后运行外部进程,如果外部进程失败,返回ExitCode <> 0。一旦我知道这个过程失败了,我想将构建状态设置为失败(因为你会看到如果代码没有编译),所以我添加了一个SetBuildProperties活动,它将Status属性设置为BuildStatus.Failed,但是这个当构建完成时,似乎只会导致部分成功构建。强制将TFS2010工作流构建为FAIL而不是部分成功

我已经尝试在我的自定义活动中设置构建的编译状态失败,这确实会导致构建失败,但我并不想这样做,因为它在解决方案编译时会引起误解。

谁能告诉我如何强制构建失败? (最好而不必设置编译状态失败!)

感谢

+0

ps,我最初遵循Ewalf Hofman的指导,从控制台应用程序中取消构建,但本指南仅导致部分成功构建 – Vermin 2011-06-09 09:52:50

+0

如果您希望编译状态成功,您将始终获得部分成功构建编译成功了,但其他的失败了,所以这使得构建部分成功 – thekip 2011-06-09 19:05:49

回答

4

这里发生了什么是,当构建完成后,工作流管理器将覆盖生成的状态,以取决于状态的组合值的构建过程。就你而言,CompilationStatus已成功,但存在自定义活动失败(将BuildStatus设置为失败),因此总体状态将为PartiallySucceeded。

这里唯一的解决方法是将CompilationStatus设置为Failed或Unknown,然后构建状态将失败。

我还没有尝试过将CompilationStatus设置为Unknown。但是,如果可以完成,您可以稍后返回并将其更改为通过。只是一种区分真正的失败编译版本的方法。

不是一个伟大的解决办法,我知道:(

UPDATE:使用SetBuildProperties活动设置生成的状态,以失败而我能够失败,即使编译成功,构建

+0

只是看了看源代码。这可能是我们代码中的一个错误,我们不尊重状态设置。我会在尝试自己复制之后回复更多细节。如果是的话,我们会在下一个版本中修复它。感谢您找到它。 – 2011-06-09 20:10:12

+0

感谢您的回答。耻辱我无法得到它以所需的方式工作,但我很chuffed我发现了一个错误在TFS lol – Vermin 2011-06-10 10:45:35

+0

我现在试着将编译状态设置为未知,并且这导致部分成功的构建。为了使构建彻底失败,我必须将编译状态设置为失败。 – Vermin 2011-06-14 11:58:38

1

在TFS 2013,使用自定义的构建模板,您可以将构建状态设置为Failed,同时将CompilationStatus和TestStatus保留为合理的值 但是,您必须在测试运行之后执行此操作,否则它会更新回来,请使用SetBuildProperties活动并设置“状态”属性。

相关问题