TeamCity作业,仅在前一步失败时运行步骤?

TeamCity作业,仅在前一步失败时运行步骤?,teamcity,Teamcity,我们正在使用TeamCity 7,并且想知道是否只有在前一步失败的情况下才可能运行步骤?构建步骤配置中的选项使您可以选择仅在所有步骤都成功时执行,即使某个步骤失败,也可以选择始终运行该步骤 是否有办法仅在前一个步骤失败时执行该步骤?无法设置仅在前一个步骤失败时执行的步骤 我所见过的最接近于此的是设置一个具有“FinishBuild”触发器的构建,该触发器总是在第一个构建完成后执行。(无论成功或失败) 然后在第二个构建中,您可以使用TeamCity REST API来确定第一个构建的最后一次执行是

我们正在使用TeamCity 7,并且想知道是否只有在前一步失败的情况下才可能运行步骤?构建步骤配置中的选项使您可以选择仅在所有步骤都成功时执行,即使某个步骤失败,也可以选择始终运行该步骤


是否有办法仅在前一个步骤失败时执行该步骤?

无法设置仅在前一个步骤失败时执行的步骤

我所见过的最接近于此的是设置一个具有“FinishBuild”触发器的构建,该触发器总是在第一个构建完成后执行。(无论成功或失败)


然后在第二个构建中,您可以使用TeamCity REST API来确定第一个构建的最后一次执行是否成功。如果未成功,则可以执行任何您想执行的操作。

作为解决方法,可以通过命令行步骤设置变量,该步骤仅在成功时运行,稍后可以检查

然后可以在powershell步骤中查询此信息,该步骤设置为即使步骤失败也要运行


另一个解决方案是Webhooks

如果构建失败,这会将webhook发送到URL。
在webhook方面,您可以处理一些操作,例如发送通知

我不确定,但可能您需要添加一个生成步骤(powershell、命令行等),该步骤将使用上一次生成的结果,然后执行/不执行您的代码。有一个功能请求使生成状态可用于生成步骤:(您可以向上投票)。这对我不起作用,因为第一步使用命令行,第二步使用PowerShell,所以它在linux主机上不支持。如果将它重写为bash,它无论如何都不会工作。
echo "##teamcity[setParameter name='env.BUILD_STATUS' value='SUCCESS']"
if($env:BUILD_STATUS -ne "SUCCESS"){

}