如何批量下载Azure Artifacts程序包?

时间:2019-07-02 16:52:18

标签: azure azure-devops azure-artifacts

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

如果我们对产品不满意,是否可以将包从Azure Artifacts批量拉到我的机器或Azure Blob存储中?我主要担心提取NuGet软件包,因为我们已经发布了成千上万的软件包。

我知道Download all packages from private nuget feed,但是我想知道是否有一种方法可以检索我们所有软件包的zip文件,或者是否可以通过其他方法批量下载所有我们的软件包。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

然后,您需要获取供稿中所有软件包的列表。您可以为此使用我们的Get Packages API。

然后,对于NuGet软件包,协议如下:

  1. 下载供稿网址(在“连接到供稿”对话框中,以.../v3/index.json结尾)
  2. 读取返回的JSON文档,使用@type = PackageBaseAddress/3.0.0从对象获取@id属性。这是PackageBaseAddress。注意,实际值被视为实现细节。始终从index.json检索地址。
  3. 如果您还没有版本列表,请下载{PackageBaseAddress}/{PackageName (lowercased)}/index.json,该列表将列表作为JSON数组(我建议以这种方式获取版本,因为它们已经被规范化了)
  4. {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. 同样,下载软件包时请确保处理重定向。