使用REST API访问Azure Dev Ops / VSTS工件中的文件内容

时间:2019-03-09 02:43:17

标签: azure-devops azure-pipelines-release-pipeline azure-pipelines-build-task azure-devops-rest-api azure-artifacts

我希望获取作为工件推送到Azure DevOps的文件的内容

通过使用此API,我能够获得带有工件zip的URL的json响应

https://dev.azure.com/uifabric/cd9e4e13-b8db-429a-9c21-499bf1c98639/_apis/build/builds/8838/artifacts?artifactName=drop&api-version=5.0

但是,我真正想要的是此zip文件中名为bundlesizes.json的文件的内容。

我确实遇到了Get File API here,其中提到了以下API

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/artifacts?artifactName={artifactName}&fileId={fileId}&fileName={fileName}&api-version=5.0

我尝试如下替换

https://dev.azure.com/uifabric/fabricpublic/_apis/build/builds/8838/artifacts?artifactName=drop&fileId=bundlesizes.json&fileName=bundlesizes.json&api-version=5.0

但是,出现此错误 enter image description here

我认为我所缺少的是fileId字段,我不知道需要输入什么。文档说fileId文件的主键。但是,我不知道在哪里可以找到它。

2 个答案:

答案 0 :(得分:2)

Microsoft没有有关如何获取FileID的完整文档。

您可以采用其他方法,并使用以下API下载文件。您可以通过GET构建详细信息获取ContainerID。

https://collectionurl/tfs/defaultcollection/_apis/resources/Containers/${containerid}?itempath=drop

答案 1 :(得分:0)

  

使用REST API访问Azure Dev Ops / VSTS工件中的文件内容

如果您正在使用Publish Build Artifacts任务,则不支持GetFile API。

我们可以使用GetArtifacts API来获取artifactName(任务中的默认值为drop)的详细信息,键入并下载URL。但是下载URL用于 zip ,而不是单个文件。

Azure DevOps团队尚未公开记录和支持用于单个文件下载的API,仅支持zip下载。

此外,“ Azure Pipeline Artifacts”还支持GetFile API,可以使用Publish Pipeline Artifacts task上传该文件。

您可以从此处检查差异:

What is the difference between build and pipeline artifacts?

希望这会有所帮助。