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

##vso[task.complete result=Failed;] is not failing a script step

我认为调用 ##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 管道 Web 中仅显示一条错误消息 ui:

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

这工作正常,但看起来真的很难看,因为“exit 0”给人的印象是步骤没问题,但实际上由于 task.complete 调用,状态将是“失败”。

我仍然想知道 task.complete 命令不中止步骤的这种行为是“设计使然”还是我只是找到了一个错误的解决方法。