Публикация снимков артефактов в артефактах Azure Devops - PullRequest
0 голосов
/ 27 сентября 2018

У меня настроена сборка Gradle в DevOps Azure, которая компилирует код в git-репозитории DevOps Azure, а затем публикует сгенерированные JAR (как артефакты Maven) в артефактах Azure, как объяснено здесь .Код в других git-репозиториях DevOps Azure может ссылаться на эти компоненты как на зависимости.Это хорошо для официальных выпусков этих компонентов (с уникальными номерами версий), но мне также нужен способ заставить это работать для выпусков моментальных снимков.Проблема в том, что я не могу публиковать артефакт с одним и тем же номером версии (например, 1.2.3-SNAPSHOT) более одного раза.Похоже, это связано с тем, что пакеты в Azure являются неизменяемыми .

. Насколько я понимаю, это означает, что артефакты Azure нельзя использовать для хранения текущих артефактов моментальных снимков.Это правильно?

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

На случай, если что-то изменится, я говорю о облачных вещах Azure, ничего локального.

1 Ответ

0 голосов
/ 15 февраля 2019

Предпосылка управления пакетами заключается в том, что пакет является неизменным.Это включает целый ряд параметров кэширования, которые в противном случае не существовали бы.Пакеты хранятся в локальном кэше пакетов, возможно, в кэше пакетов прокси-каналов, и все эти элементы предполагают, что пакеты с одинаковым именем + версия неизменны и будут обслуживать кэшированную версию вместо последней версии, которую вы отправили.Большинство систем пакетов построено на этой предпосылке, включая Nuget и NPM.

Хитрость в создании моментальных снимков разработки заключается в использовании семантического управления версиями и добавлении уникального суффикса к вашей версии.Например, 1.2.3-SNAPSHOT.1, за которым следует 1.2.3-SNAPSHOT.2, для конвейеров Azure доступны инструменты, такие как GitVersion , которые могут автоматически генерировать уникальную версию + суффикс, который можно передать в версию для своего артефакта.

Если вы не хотите «портить» ваш канал основного пакета, вы можете настроить второй канал для целей разработки, который содержит все ваши промежуточные пакеты, затем вы можете либо добавить один из этих пакетов в свой основной канал, либоможет запустить определенный конвейер (конфигурацию) для отправки окончательного пакета на канал, используемый для ваших стабильных пакетов.

...