Azure DevOps 管道 - 如何捕获错误

Azure DevOps pipeline - how to catch error

我正在使用 Azure DevOps 构建管道,运行 我的 selenium Web 自动化测试(运行 通过 Maven,在 docker 容器内)

  1. 现在,即使我的测试场景之一失败了,管道作业仍然被认为是成功的,我如何指定寻找特定的日志来失败呢?

我正在使用的 'pipeline job/task/phase' 运行 我的测试是 'docker compose'

  1. 我的第二个问题是,是否可以过滤管道输出日志?目前它充斥着容器中少数服务 运行 的输出:

我唯一发现的是,可以搜索日志,但没有过滤,问候。

如果您的 objective 在您的多个测试失败时导致构建失败,我建议您在构建过程中再添加一个步骤:Publish Test Results task

这是测试 运行 与默认 Visual Studio Test 任务不同的另一项任务的必要步骤,后者包括将测试结果文件发布到 Azure DevOps,并使您的构建能够了解您的测试结果(然后让您决定如果一项或多项测试失败该怎么办)

在您的情况下,您可能还必须找到一种方法来从您的容器中提取测试结果文件,因为您的测试结果可能会在您的容器中生成并存储(并且 Publish Test Result task)

关于你的第二个问题,我不知道有什么方法可以直接从网络界面过滤输出日志,抱歉:(

我们 运行 通过我们的 cypress 测试对此进行了研究(你应该放弃 selenium 来使用 cypress,它很可爱)并通过手动获取退出代码解决了这个问题。我们还发现,如果有后台进程 运行,即使出现错误,AzureDevops 也会挂起,因此如果您像我们一样启动 Web 服务器,也一定要注意这一点。

  - bash: |
      yarn test-ci:e2e  2> /dev/null 
      if [ $? -eq 0 ]
        then
          yarn stop
          exit 0
        else
          yarn stop
          exit 1
      fi
    displayName: 'Run Cypress Tests'

对于任何寻找过滤日志方法的人来说,如果有多个服务 运行,您可以创建运行 docker 命令的新 azure 构建管道任务 (Docker):

docker logs -f NAME_OF_THE_SERVICE

这样您将只会看到来自所需服务的日志。