我在TeamCity中有一个步骤,它在执行下一步之前首先测试部署(具有"执行:如果所有先前步骤成功完成"选项选项)。我使用.deploy.cmd脚本并通过/ T开关在测试模式下执行。该过程返回代码0,但测试部署返回错误代码。
如何让它失败而不进入下一步? (下面是错误的快照)
谢谢,
答案 0 :(得分:0)
您可以使用Runner type
PowerShell
来调用cmd脚本。
当您使用PowerShell时,您可以使用try-catch结构并返回错误代码>当代码出错时为0。
E.g:
$result = $null
try
{
$result = &("C:\Users\guest\deploy.cmd") %TestArg%
}
catch
{
$errorMessage = $_.Exception.Message
Write-Error "Error on deploy: $errorMessage"
exit 1
}
echo $result
在哪里,%TestArg%
是您的Configuration Parameter
,等于/T
或什么都没有。
如果您的脚本返回一些结果,您可以解析它并手动返回错误代码
if($result.ToLower().Contains("error"))
{
Write-Error "Deploy operation result contains error(s)"
exit 1
}
注意:强>
在我看来,参数Format stderr output as
仅负责构建日志中显示错误的颜色。
我通过SSDT(SqlPackage.exe)使用此解决方案部署数据库,因为即使出现错误,它也不会中止构建和后续步骤