Context:使用Azure管道执行安卓工具(UI)测试。
有两个作业:一个做测试(启动一个模拟器并运行测试),另一个作业报告一个错误,如果上一个作业由于某种原因失败了。
我的Azure管道中有以下简单设置:
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中的日志包含非常有用的信息,我想在第二个作业中访问这些信息:
* 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如何在我的第二份工作中得到“出了什么问题”的信息?
我的想法是使用多阶段变量在第一个作业中记录消息,然后在第二个作业中使用它。不幸的是,我还没有弄清楚如何从一开始就得到这个消息。
发布于 2021-01-27 10:10:39
作为解决办法,您可以使用建造时间线 api获取详细的构建信息。api响应包含属性issues,如果有错误,可以在那里检查结果。
https://dev.azure.com/{org}/{pro}/_apis/build/builds/3838/timeline/?api-version=6.0

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

通过调用这个日志url,您可以获得Gradle@2任务的日志,然后解析日志以获得所需的消息。
https://stackoverflow.com/questions/65868980
复制相似问题