Chr*_*ais 5 azure azure-cli azure-devops azure-pipelines azure-vm
我在我的 Azure 管道中运行了一个相当大的构建,它涉及处理大量数据,因此我的构建代理需要太多内存来处理。因此,我的方法是启动一个 linux VM,在那里运行构建,然后将生成的 docker 映像推送到我的容器注册表。
为了实现这一点,我使用Azure CLI 任务向 VM 发出命令(例如az vm start,az vm run-command ...等)。
我面临的问题是,az vm run-command即使您在 VM 上运行的脚本返回非零状态代码,它也会“成功”。例如,这个“坏”的虚拟机脚本:
az vm run-command invoke -g <group> -n <vmName> --command-id RunShellScript --scripts "cd /nonexistent/path"
Run Code Online (Sandbox Code Playgroud)
返回以下响应:
{
"value": [
{
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "Enable succeeded: \n[stdout]\n\n[stderr]\n/var/lib/waagent/run-command/download/87/script.sh: 1: cd: can't cd to /nonexistent/path\n",
"time": null
}
]
}
Run Code Online (Sandbox Code Playgroud)
因此,该命令成功了,大概是因为它成功地在 VM 上执行了脚本。脚本实际上在 VM 上失败的事实隐藏在响应“消息”中
如果 VM 上的脚本返回非零状态代码,我希望我的 Azure 管道任务失败。我将如何实现这一目标?
一个想法是解析响应(以某种方式)并搜索下面的文本stderr- 但这听起来很麻烦,我什至不确定如何“访问”任务中的响应。
您是否在 Azure CLI 任务上启用了“标准错误失败”选项?如果没有,您可以尝试启用它并再次运行管道,看看错误“ cd: can't cd to /nonexistent/path”是否会使任务运行失败。
如果任务仍然通过,则错误“ cd: can't cd to /nonexistent/path”不应是标准错误。在这种情况下,您可能需要在脚本中添加更多命令行来监控命令的输出日志az。一旦有任何输出消息显示错误,请执行“ exit 1”退出脚本并返回标准错误以使任务失败。
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |