【发布时间】:2020-07-08 09:12:20
【问题描述】:
我在 Azure 上有一台用于运行自托管 DevOps 代理(版本 2.170.1)的虚拟机。 该管道由一些运行构建和单元测试的 PowerShell 任务组成。 我为此使用 PowerShell 核心(版本 7.0.2),服务器操作系统是 Windows Server 2019 Datacenter 1809。
我尝试从 Powershell 核心(版本 7.0.2)直接在服务器上运行任务,并且一切正常。 当它在带有 Powershell@2 任务的管道中运行时,警告会报告为导致任务失败的错误,即使它不应该失败。 此外,还会发生其他意外错误,这些错误在直接在服务器上运行时不会发生。
作为实验,我在笔记本电脑上安装了相同版本的代理,然后在其上运行管道。再次使用 Powershell Core(版本 7.0.2),笔记本电脑操作系统为 Windows 10 Enterprise 1909。 所有的编译器、测试工具等也是同一个版本。
这次在运行管道时一切都按预期工作。
这似乎表明问题不是 Powershell 任务或代理。 然而,我现在已经到了一个我真的不知道问题出在哪里的地步。
这是管道正在运行的两个任务的示例。
- task: PowerShell@2
displayName: Build source code
inputs:
targetType: inline
pwsh: true
script: 'cd build; make all --jobs 4 --output-sync'
- task: PowerShell@2
displayName: Unit test
inputs:
targetType: inline
pwsh: true
script: 'cd test/unit; ceedling gcov:i2c_ha utils:gcov'
有没有人知道问题可能是什么以及可能的解决方案是什么?
更新:
所以我做了一些进一步的调查,似乎问题实际上源于从输出中记录错误的方式。
当我在禁用警告的情况下运行 Ceedling 时,不会报告任何错误或警告。 启用警告时,所有警告都报告为错误。所以看起来 Ceedling 的输出分析不正确。
A piece of the output from running Ceedling
在链接中,我附上了一段运行 Ceedling 的任务的输出日志。可以看出 Ceedling 只报告警告,但 Azure DevOps 中的日志记录工具实际上将其记录为错误。
这使得了解警告和实际错误的概览变得困难。
【问题讨论】:
标签: powershell azure-devops virtual-machine azure-devops-self-hosted-agent