Azure DevOps管道-如何捕获错误

时间:2018-11-29 09:07:46

标签: azure docker continuous-integration azure-devops pipeline

我正在使用Azure DevOps构建管道来运行我的硒Web自动化测试(由docker容器内的maven运行)

  1. 现在,即使我的测试方案之一失败了,管道作业仍然被认为是成功的,我如何指定查找某些日志来使它失败?

我用来运行测试的“管道作业/任务/阶段”是“ docker compose”

  1. 我的第二个问题是,是否有可能过滤管道输出日志?当前,容器中运行的少数服务的输出淹没了它:

enter image description here

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

3 个答案:

答案 0 :(得分:1)

如果您的目标是在一个或多个测试失败时使构建失败,那么我建议您在构建过程中再增加一个步骤:Publish Test Results任务

这是测试使用默认任务Visual Studio Test以外的其他任务运行的必要步骤,该任务包括将测试结果文件发布到Azure DevOps,并使生成的版本知道您的测试结果(然后让您决定一个或多个测试失败时该怎么做)

在您的情况下,您可能还必须找到一种从容器中提取测试结果文件的方法,因为您的测试结果可能是在容器内部产生和存储的(Publish Test Result task无法使用)

对于您的第二个问题,我不知道有任何方法可以直接从Web界面直接过滤输出日志,很抱歉:(

答案 1 :(得分:1)

我们在赛普拉斯测试中遇到了这个问题(您应该放弃硒来制造赛普拉斯,这是它的甜头),并通过手动获取退出代码来解决。我们还发现,即使有错误运行,如果正在运行后台进程,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'

答案 2 :(得分:0)

对于正在寻找过滤日志方式的任何人,如果有多个服务正在运行,则可以创建运行docker命令的新的Azure构建管道任务(Docker):

docker logs -f NAME_OF_THE_SERVICE

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