##vso[task.complete result=Failed;]没有使脚本步骤失败



我认为对##vso[task.complete result=Failed;]的调用应该会使调用它的脚本步骤立即失败,但我现在在我的管道中看到了一个情况,但事实并非如此。

我的假设是错误的还是Azure管道脚本任务中存在错误?

我的构建代理在Ubuntu容器中运行任务,代理本身就是一个Linux代理。

您可以尝试在'##vso[task.complete result=Failed;]'命令之后添加命令行'exit 1'。

echo "##vso[task.complete result=Failed;]"
exit 1

同样,您也可以尝试在管道任务中使用日志记录命令">LogIssue"来记录任务中的错误。

echo "##vso[task.logissue type=error]Something went very wrong."
exit 1

我刚刚做了一个小测试,使用下面的代码可以实现所需的目标,即在Azure pipelines web ui中中止一个错误步骤,但只显示一条错误消息:

echo "##vso[task.logissue type=error]Something went very wrong."
echo "##vso[task.complete result=Failed;]Make step fail"
exit 0

这工作得很好,但它看起来真的很难看,因为";退出0";给人的印象是步骤是可以的,但实际上状态将是"正常";失败";因为task.complete调用。

尽管如此,我还是想知道task.complete命令不中止该步骤的这种行为是否是";通过设计";或者我刚刚找到了一个解决bug的方法。

检查退出脚本的行附近是否有try-catch。

我花了一整天的时间解释为什么它显示错误,但任务永远不会被标记为失败。

如果在出口或[system.environment]::exit(1(行周围没有try-catch,它应该可以工作。。

相关内容

  • 没有找到相关文章

最新更新