如何批量下载 Azure Artifacts 包?

How to Bulk Download Azure Artifacts Packages?

我的组织正在将我们的软件包(NuGet、NPM)迁移到 Azure Artifacts。我们已将大约 50,000 个 NuGet 包 (2GB) 推送到 Azure Artifacts。

有没有办法将我的包从 Azure Artifacts 批量拉取到我的机器或 Azure blob 存储,以防我们对产品不满意?我主要关心提取我们的 NuGet 包,因为我们发布了数千个包。

我知道 但我想知道是否有办法检索我们所有软件包的 zip 文件,或者是否有其他方法批量下载我们所有的软件包。

谢谢!

我们没有批量下载选项,但您自己编写脚本会很容易。

首先,您需要get a PAT。确保 PAT 具有包装(读取)范围。您将使用 PAT 作为密码进行身份验证。您使用的用户名无关紧要。

然后,您需要获取提要中所有包的列表。您可以使用我们的 Get Packages API。

那么,对于NuGet包,协议如下:

  1. 下载提要 URL(从“连接到提要”对话框,将以 .../v3/index.json 结尾)
  2. 读取返回的JSON文档,从@type=PackageBaseAddress/3.0.0的对象中获取@id属性。这是 PackageBaseAddress。请注意,实际值被视为实现细节。始终从 index.json.
  3. 检索地址
  4. 如果您还没有版本列表,请下载 {PackageBaseAddress}/{PackageName (lowercased)}/index.json,它将列表作为 JSON 数组(我建议以这种方式获取版本,因为它们已经被标准化)
  5. {PackageBaseAddress}/{PackageName (lowercase)}/{PackageVersion (normalized)}/{PackageName (lowercase)}.{PackageVersion (normalized)}.nupkg 下载软件包
    • 例如{PackageBaseAddress}/restsharp/106.4.1/restsharp.106.4.1.nupkg
    • 请务必遵循重定向,因为该服务实际上会将您从我们的后端存储中下载

对于 npm 包:

  1. 从“连接到供稿”对话框获取供稿 URL(它将以 .../npm/registry 结尾)
  2. 下载{Feed URL}/{PackageName}(范围包包括范围,例如{Feed URL}/@{Scope}/{PackageName}
  3. 每个版本的下载 URL 都在 JSON 响应中作为版本列出。*.dist.tarball
  4. 同样,请务必在下载包时处理重定向。