Как справиться с ограничением размера файла Azure Devops 500 МБ (пакеты Maven)?

У меня есть zip на 2 ГБ, который теперь хранится в Nexus как артефакт Maven:

<dependency>
  <groupId>groupId</groupId>
  <artifactId>artifactId</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>

Этот zip загружается gradle во время сборки:

dependencies {
    packageName("groupId:artifactId:1.0.0@ZIP")
}

Теперь почтовый индекс должен быть перемещен в Azure DevOps, но когда я попытался поместить его здесь как артефакт Maven, я получил ошибку относительно размера. java.lang.IllegalArgumentException: размер прогрессирующего файла не может быть больше, чем размер: 2735210496 ›1974413494 Если я попытаюсь протолкнуть zip меньшего размера, он будет работать должным образом. Команда, которую я использую, чтобы протолкнуть его как артефакт maven:

mvn deploy:deploy-file -Dpackaging="zip" -DrepositoryId="azureFeed" -Durl="azuremavenRepoURL" -DgroupId="groupId" -DartifactId="artifactId" -Dversion="1.0.0" -Dfile="PathTo2GBFile\FileName.ZIP"

После исследований я нашел документацию, в которой упоминается ограничение размера пакетов maven: https://docs.microsoft.com/en-us/azure/devops/artifacts/reference/limits?view=azure-devops

Как я могу отправить свой zip-архив в качестве артефакта Maven в Azure Devops, если он превышает 500 МБ? Каков самый простой способ отправить zip-архив размером 2 ГБ в Azure Devops, чтобы это было легко загружен Gradle (например, теперь он работает с Nexus)?

PS: Я попытался и мне удалось протолкнуть zip 2 ГБ в качестве универсального пакета (используя z CLI), но в этом случае я не могу получить zip в gradle. Более того, из того, что мне удалось найти, получение универсальных пакетов через API пока невозможно в Azure Devops: https://developercommunity.visualstudio.com/idea/495533/download-universal-package-trough-api.html, Azure Artifact - Загрузите определенную версию универсального артефакта


person dj_frunza    schedule 10.02.2021    source источник
comment
Что это за артефакт? Размер 2 ГБ? Основываясь на данном фрагменте maven, это странно ...   -  person khmarbaise    schedule 10.02.2021
comment
Как сделать такой большой артефакт?   -  person J Fabian Meier    schedule 10.02.2021
comment
Я только что добавил в вопрос команду mvn, которую я использовал для создания и отправки моего артефакта в Azure.   -  person dj_frunza    schedule 10.02.2021
comment
В zip-архиве находится платформа, на которой построен проект (поэтому он такой большой). Я не спорю, что хранить его как артефакт maven немного странно. Но я предполагаю, что хранение его таким образом на Nexus сделало получение через Gradle действительно простым, как получение любой другой зависимости maven .... Если это можно сохранить каким-либо другим способом в Azure Artifacts, меня это устраивает, если Gradle может тем или иным образом извлекать ...   -  person dj_frunza    schedule 10.02.2021


Ответы (1)


Как справиться с ограничением размера файла Azure Devops 500 МБ (пакеты Maven)?

Как известно, на данный момент существует ограничение на размер пакетов Maven в 500 МБ на файл, а также отсутствует REST API для загрузки универсальных пакетов.

Мы могли использовать только Azure CLI скачать пакет. Azure DevOps не поддерживает прямые ссылки для загрузки HTTP / HTTPS или другие способы загрузки пакета :

az artifacts universal download --organization https://dev.azure.com/fabrikam --feed FabrikamFiber --name my-first-package --version 1.0.0 --path .

Вы можете проверить этот документ Загрузите универсальный пакет для получения дополнительных сведений.

person Leo Liu-MSFT    schedule 11.02.2021
comment
Спасибо за ваш ответ ! Я не знал о задаче загрузки Gradle ... Но поскольку Azure DevOps не поддерживает прямые ссылки для загрузки HTTP / HTTPS, я полагаю, я не могу загрузить свой универсальный пакет с помощью задачи загрузки Gradle, верно? - person dj_frunza; 11.02.2021
comment
@dj_frunza, да ты прав! Это предложение действительно неуместно, и я уберу его из своего ответа. Итак, как насчет использования Azure CLI для загрузки пакета? Он может загрузить пакет, но я не уверен на 100%, подходит ли он для вашей ситуации. - person Leo Liu-MSFT; 11.02.2021
comment
Мне нужна загрузка для автоматической работы на нескольких машинах (с разными ОС). Чтобы получить его из Azure с использованием Gradle в качестве зависимости Maven, требуется только защищенный токен, и именно поэтому я хотел сделать это вот так. Я думаю, что Azure CLI более громоздкий, поскольку он подразумевает установку его на всех машинах, и, кроме того, Azure CLI требует также пользователя и пароля для входа в систему, и я бы хотел избежать сохранения большого количества паролей в нескольких системах. - person dj_frunza; 11.02.2021
comment
@dj_frunza, Судя по вашему описанию, вам больше подходит Gradle. Но я недостаточно знаю о Gradle, я не встречал Gradle, который может обрабатывать универсальный пакет. Это будет помехой - person Leo Liu-MSFT; 11.02.2021
comment
Хорошо, без проблем, спасибо за поддержку, которую вы мне до сих пор оказали - person dj_frunza; 11.02.2021
comment
@dj_frunza, Вам всегда рады. К сожалению, идеального решения вашей проблемы не существует. Если приведенный выше ответ даст вам какую-либо помощь, вы можете принять его как ответ, прежде чем получите какой-либо другой лучший ответ. Это может быть полезно для других членов сообщества, читающих эту ветку, и мы могли бы заархивировать эту ветку, спасибо. - person Leo Liu-MSFT; 12.02.2021