【问题标题】:How to trigger STDERR on release pipelines in Azure Devops如何在 Azure Devops 中的发布管道上触发 STDERR
【发布时间】:2020-05-01 21:12:45
【问题描述】:

我们有一个 Angular 应用程序,上面有一些 e2e 测试。我们使用 e2e 测试创建一个独立的 docker 映像,一个用于应用程序。

当我们使用 azure devops 发布管道部署应用程序时,我们有一个 poststep,在部署之后应该运行 e2e 测试。

我们运行这些命令:

az container create --resource-group $(DEV_RG) --name $(E2E_IMAGE_NAME) --image $(E2E_IMAGE_REGISTRY) --registry-username $(REGISTRY_USERNAME) --registry-password $(REGISTRY_PASSWORD) --vnet $(VNET_LOCATION) --subnet $(E2E_SUBNET) --subnet-address-prefix $(E2E_IP_GROUP) --command-line ./rune2e.sh 

然后,我们想看看输出:

az container logs --resource-group $(DEV_RG) --name $(E2E_IMAGE_NAME)

我也试过

az container attach --resource-group $(DEV_RG) --name $(E2E_IMAGE_NAME)

无论这些日志中发生什么,该步骤始终为绿色。

如何捕获容器正在输出的stderr 事件,并在 Azure devops 中将步骤标记为红色?

【问题讨论】:

    标签: azure-devops azure-cli azure-container-instances


    【解决方案1】:

    Docker 容器日志都是同一流上的 stdout/stderr,因此使用az container logs 命令查看它们时无法区分。

    你可以采取两种方法

    1) 如果您希望在某些 STDERR 或错误日志上失败,则使用 grep 查找您的错误日志可能包含的已知关键字(例如 [ERROR])

    2) 更新 docker 容器(或容器的入口点)内的进程,以将其 stderr 流重定向到容器中的本地文件。 (例如 start.sh 2> stderr.log)在你的管道运行 E2E 之后,简单地运行一个任务来运行 az container exec 并检查是否有任何日志写入容器内的 stderr.log

    在这两种情况下,您都应该返回一个非 0 退出代码来强制您的管道失败。

    【讨论】:

    • 我现在正在使用 Azure CLI 任务,它接缝不支持 grep 和启动脚本?我必须使用管道中的 Bash 任务来实现这一点?
    • 正确,您需要使用 BASH 任务来更好地控制您需要执行的自定义脚本
    • 无法使用 Bash,不知何故,使我们能够部署到我们的云的服务主体不支持它。
    【解决方案2】:

    我最终将此添加到记录容器的 Azure CLI 任务中。

    #!/bin/bash
    
    az container logs --resource-group $(DEV_RG) --name  $(E2E_IMAGE_NAME) --only-show-errors | grep Error\:
    
    if [ $? -eq 0 ]
    then
      echo "Failure: I found error in file. Test failed."
      exit 1
    else
      echo "Success: I did not find error in file. Test passed." >&2
      exit 0
    fi
    

    【讨论】:

    • 非常感谢您在此处分享的解决方案。如果你能接受这个答案那就太好了,然后其他人可以直接知道这个工作方法:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2020-04-24
    • 1970-01-01
    • 2020-07-04
    相关资源
    最近更新 更多