首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将“哪里出错”级错误消息传递给Azure管道中的另一个作业

将“哪里出错”级错误消息传递给Azure管道中的另一个作业
EN

Stack Overflow用户
提问于 2021-01-24 09:31:28
回答 1查看 88关注 0票数 0

Context:使用Azure管道执行安卓工具(UI)测试。

有两个作业:一个做测试(启动一个模拟器并运行测试),另一个作业报告一个错误,如果上一个作业由于某种原因失败了。

我的Azure管道中有以下简单设置:

代码语言:javascript
复制
jobs:
  - job: SmokeTesting
    displayName: Smoke testing
    timeoutInMinutes: 60
    pool:
      vmImage: 'macOS-latest'
    steps:
      - script: meta/scripts.sh launch_avd
        displayName: Launch AVD
        workingDirectory: ''
      - task: Gradle@2
        displayName: Run smoke tests
        inputs:
          workingDirectory: ''
          gradleWrapperFile: 'gradlew'
          publishJUnitResults: true
          tasks: ':app:connectedAndroidTest'
  - job: ReportFailure
    displayName: Report failure
    dependsOn:
      - SmokeTesting
    condition: or(failed(), canceled())
    steps:
      - script: meta/scripts.sh report_smoke_tests_error
        workingDirectory: ''
        env:
          BUILD_ID: $(Build.BuildId)

所有这些都如预期的那样工作:如果出现错误,则运行第二个作业。在本例中,Azure管道Web中的日志包含非常有用的信息,我想在第二个作业中访问这些信息:

代码语言:javascript
复制
* What went wrong:
Execution failed for task ':app:stripDebugDebugSymbols'.
> No version of NDK matched the requested version 22.0.7026061. Versions available locally: 18.1.5063045, 21.3.6528147, 21.3.6528147

如何在我的第二份工作中得到“出了什么问题”的信息?

我的想法是使用多阶段变量在第一个作业中记录消息,然后在第二个作业中使用它。不幸的是,我还没有弄清楚如何从一开始就得到这个消息。

EN

回答 1

Stack Overflow用户

发布于 2021-01-27 10:10:39

作为解决办法,您可以使用建造时间线 api获取详细的构建信息。api响应包含属性issues,如果有错误,可以在那里检查结果。

代码语言:javascript
复制
https://dev.azure.com/{org}/{pro}/_apis/build/builds/3838/timeline/?api-version=6.0

如果issues不包含所需的错误消息,则可以在响应正文中检索与Gradle@2任务相关的内容。根据属性log获取日志url。

通过调用这个日志url,您可以获得Gradle@2任务的日志,然后解析日志以获得所需的消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65868980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档