【问题标题】:AzureDevops PowerShell and TasksAzureDevops PowerShell 和任务
【发布时间】:2019-09-04 11:23:45
【问题描述】:

我目前有一个 VSTS/AzureDevOps 任务扩展,它由一个 json 文件和一个 ps1 脚本组成。 json 文件基本上规定了输入,ps1 脚​​本就是这样做的(它运行一些测试。)我想扩展这个任务以在管道中上传测试结果,AzureDevops 有方便的“发布测试结果”,但那是YAML 的事情。

有没有办法获得与使用预制任务相同的功能,但只能通过 PowerShell?我看了this 之类的东西,但找不到明显的东西。

我认为这样做的唯一其他途径是以某种方式使用 AzureDevops REST api?

【问题讨论】:

  • 我不明白你说“发布测试结果”是 YAML 是什么意思?要发布文件和文件夹,您可以使用类似这样的日志记录命令 -> docs.microsoft.com/en-us/azure/devops/pipelines/scripts/… 。只需写信给主机,Pipeline-Agent 就会接收您的命令并处理它
  • 您发布的链接已经与我链接的内容相同,但它包含在更易于使用的功能中。我认为“Write-VstsAssociateArtifact”甚至可能是您正在寻找的东西,但我很确定
  • @D.J.我的意思是“发布测试结果”功能在视觉设计器中很容易使用。但我不明白如何使用纯 powershell 完成同样的事情。 GitHub indicates that I can use "artifact.upload",但文档有些欠缺。
  • 我可以知道您是如何在您的 ps1 脚本中运行测试的吗?如果您调用 dotnet test 或 vstest 在脚本中运行测试,那么您可以使用 dotnet 或 vstest 发布测试结果。
  • @LeviLu-MSFT 测试由自制的测试框架(一些自定义节点的东西)执行。我已经说服开发人员将 junit xml 输出添加到他的代码中,所以现在我们可以生成一个 junit xml 文件结果文件。目前我从 HTTP 端点获取 xml 文件,现在我想将其推送到 Azure 管道。

标签: powershell azure-devops


【解决方案1】:

我按照here 给出的示例测试了artifact.upload。并发现它已将文件发布到工件,并且无法在构建SummaryTests 页面中显示测试结果,如下图所示。

使用artifact.upload 在 powershell 中使用以下脚本进行测试。

echo "##vso[artifact.upload containerfolder=testresult;artifactname=uploadedresult;]$(Agent.BuildDirectory)\TestResult\WS-LEVIL-01_WS-LEVIL-01_2019-09-05_11_36_44.trx"

任务日志如下:

Uploading 1 files
File upload succeed.
Upload 'C:\agent\_work\2\TestResult\WS-LEVIL-01_WS-LEVIL-01_2019-09-05_11_36_44.trx' to file container: '#/3389084/testresult'
Associated artifact 209 with build 595
Async Command End: Upload Artifact

我尝试使用纯 powershell 来做到这一点,似乎是一项艰巨的工作。如果您只想将其发布到 azure 管道并希望显示如上图所示的结果。您可以将 xml 文件保存到主机代理上的某个位置,然后使用Publish Test Result 任务来推送 xml 测试结果。这似乎是一种更简单的解决方法。

【讨论】:

  • 您能否给出用于artifact.upload 日志记录命令的完整示例字符串?然后我认为这应该符合回答的条件。与同事交谈后,看起来我们最终要做的是输出一个包含文件名的变量,然后按照您的建议使用Publish Test Result 跟进。
  • 我更新了示例字符串,希望对您有所帮助。
猜你喜欢
  • 2021-06-06
  • 2021-07-16
  • 1970-01-01
  • 2021-05-10
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多