问题描述
我正在使用 azure-DevOps 构建管道来运行和发布邮递员纽曼报告作为管道工件。 我的管道确实发布了管道工件(邮递员的 HTML 报告,并且还在 XML 文件中提供了纽曼报告)。
我的要求是使用 azure-DevOps API 读取 XML 文件。 & 这个 API 我必须从我的程序(nodeJs/Python)中调用。
知道怎么做吗?提前致谢 注意:我看到 ADO 仍在处理 fileId(不确定如何获取 fileID) https://github.com/MicrosoftDocs/vsts-rest-api-specs/issues/381
解决方法
azure 管道中发布的工件提供了下载 url 来获取文件。您可以直接从构建摘要门户获取下载 url。见下文:
转到已发布的工件-->单击要下载的文件的 3dots
您可以直接调用下载url来读取代码中的xml文件。请参阅以下 powershell 脚本中的示例:
$url = "https://dev.azure.com/{org}/_apis/resources/Containers/{containerId}/{artifactName}?itemPath=artifactName%2Fbuild.xml"
$PAT="Personal access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
$xmlContent = Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method get
如果您不想从 UI 门户获取下载 url。您可以调用 Artifacts - Get Artifact 来获取容器 ID。然后获取到容器id后就可以获取xml文件的下载url了。
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/artifacts?artifactName={artifactName}&api-version=6.0
请参阅下面来自上述rest api的示例结果。
下载地址:
https://dev.azure.com/{org}/_apis/resources/Containers/{containerId}/{artifactName}?itemPath={artifactName}%2F{xmlfileName.xml}