TeamCity Test Deploy步骤流程退出代码0,即使遇到错误也会继续执行下一步

时间:2017-12-08 00:19:34

标签: teamcity continuous-deployment msdeploy teamcity-9.0

我在TeamCity中有一个步骤,它在执行下一步之前首先测试部署(具有"执行:如果所有先前步骤成功完成"选项选项)。我使用.deploy.cmd脚本并通过/ T开关在测试模式下执行。该过程返回代码0,但测试部署返回错误代码。

如何让它失败而不进入下一步? (下面是错误的快照)

谢谢,

Error Snapshot

1 个答案:

答案 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)使用此解决方案部署数据库,因为即使出现错误,它也不会中止构建和后续步骤