Как массово скачать пакеты артефактов Azure? - PullRequest
1 голос
/ 02 июля 2019

Моя организация переносит наши пакеты программного обеспечения (NuGet, NPM) в артефакты Azure. У нас есть приблизительно 50 000 пакетов NuGet (2 ГБ), которые мы отправили в артефакты Azure.

Есть ли способ массовой загрузки моих пакетов из артефактов Azure либо на мою машину, либо в хранилище BLOB-объектов Azure, если мы не удовлетворены этим продуктом? В основном меня беспокоит получение наших пакетов NuGet, потому что у нас опубликованы тысячи пакетов.

Мне известно о Загрузка всех пакетов из личного канала Nuget , но я хотел бы знать, есть ли способ получить zip-файл всех наших пакетов или какой-либо другой способ загрузить все наших пакетов навалом.

Спасибо!

1 Ответ

1 голос
/ 02 июля 2019

У нас нет опции массовой загрузки, но было бы довольно легко написать что-то самостоятельно.

Во-первых, вам нужно получить PAT .Убедитесь, что PAT имеет область действия «Упаковка (чтение)».Вы будете использовать PAT в качестве пароля для аутентификации.Имя пользователя, которое вы используете, не имеет значения.

Затем вам нужно получить список всех пакетов в ленте.Для этого вы можете использовать наш Get Packages API.

Затем для пакетов NuGet протокол выглядит следующим образом:

  1. Загрузите URL фида (сДиалог Connect to Feed, оканчивается на .../v3/index.json)
  2. Прочитать возвращенный документ JSON, получить атрибут @id из объекта с @type = PackageBaseAddress/3.0.0.Это адрес 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. Опять же, обязательно обращайтесь с перенаправлениями при загрузке пакетов.
...