使用 cURL 从 Azure DevOps 下载通用项目

Download universal artifact from azure devops using cURL

提问人:MartinZ 提问时间:11/17/2023 更新时间:11/17/2023 访问量:48

问:

我想从 Azure devops artifactory 下载通用/UPack 项目。我知道我可以使用 Azure CLI,但这意味着需要安装 Azure CLI,这是最后的手段。

我已经为 maven 工件实现了类似的方法,但我无法为通用/UPack 工件找出正确的方法。

以下代码将获取最新版本的 maven 工件并下载包中的特定文件。

PKG_VERSION=$(curl -s -u $ARTIFACTORY_USERNAME:$ARTIFACTORY_PASSWORD "https://feeds.dev.azure.com/<ORGANISATION_NAME>/<PROJECT_ID>/_apis/packaging/feeds/<FEED_ID>/packages?packageNameQuery=<GROUP_NAME>:<ARTIFACT_ID>&api-version=6.0" | jq -r ".value[0].versions[0].normalizedVersion")

curl -u $ARTIFACTORY_USERNAME:$ARTIFACTORY_PERSONAL_ACCESS_TOKEN -o /app/boot.jar -L https://pkgs.dev.azure.com/<ORGANISATION_NAME>/<PROJECT_ID>/_apis/packaging/feeds/<FEED_ID>/maven/<GROUP_NAME>/<ARTIFACT_ID>/$PKG_VERSION/<JAR_FILE_NAME>/content

有没有办法做与 universal/UPack 类似的事情,但有一个额外的条件:下载该包的全部内容,而不仅仅是单个文件。

azure curl azure-devops azure-rest-api

评论

0赞 Jonathan Dodds 11/17/2023
你似乎正在使用 Azure Artifacts(作为 Azure DevOps 的一部分)。JFrog Artifactory 是一个不同的产品,“Azure DevOps Artifactory”不是一回事。
0赞 Jonathan Dodds 11/17/2023
其他包类型(Maven、Npm、NuGet、Python)已记录了“下载包”API(例如 Maven - 下载包,但通用包没有。Azure DevOps REST API 文档具有不完整的历史记录,因此很难知道缺少的 API 是否不存在或未记录。
0赞 Jonathan Dodds 11/17/2023
如果 API 在那里,我的猜测是端点是 URL 上的GEThttps://pkgs.dev.azure.com/{organization}/{project}/_apis/packaging/feeds/{feedId}/upack/packages/{packageName}/versions/{packageVersion}/content?api-version=6.0
0赞 Bright Ran-MSFT 11/17/2023
API 通用 - 获取包版本仅在响应正文中显示有关指定通用包版本的信息(通常为 JSON 内容)。它不会下载指定的通用包版本。没有记录在案的 REST API 用于从 Azure Artifacts 源下载通用包。

答:

0赞 Bright Ran-MSFT 11/17/2023 #1

与 Azure Artifacts 中的其他包类型不同,通用类型包没有可用的“下载包”,可以使用 REST API。因此,不能使用 curl 命令调用 REST API 来下载通用包。

目前,下载通用包的唯一可用方法是使用“az artifacts universal download”命令。


如果你的项目确实需要一个通用包的 REST API,可以通过 curl 命令调用来下载通用包,我建议你尝试在开发者社区上报告功能请求。这将使产品团队更方便地接收和理解您的想法。你的反馈也可能有助于改进Azure DevOps产品。