#deployment #azure-devops #azure-pipelines-release-pipeline #release-management #azure-artifacts
#развертывание #azure-devops #azure-pipelines-release-pipeline #управление выпуском #azure-артефакты
Вопрос:
Я пытаюсь найти наиболее правильный и простой процесс развертывания для каждого выпуска приложения, который у нас есть. Трудности заключаются в следующем:
- Это выпуски Azure DevOps.
- Приложение содержит более одного артефакта, который должен быть доставлен как единое целое. Дистрибутив приложения, его модули и некоторая конфигурация для серверов, которые напрямую не связаны с приложением, и, конечно, сценарии автоматизации (которые являются версионными). Все они имеют свой собственный процесс сборки и могут иметь отдельные версии.
- Все эти компоненты (приложение, отдельная конфигурация сервера, автоматизация) поставляются как одна версия продукта. Однако они могут иметь разные версии, например: 12.2.1 (приложение), 12.2.3 (сервер), 12.2.1 (автоматизация).
Вопрос в том, как построить процесс, когда после выпуска (официального) мы можем объединить все окончательные версии (я имею в виду, не указывая их вручную при создании конвейерного выпуска для каждого), принимая во внимание, что версия одного из компонентов может быть увеличена, и мы должны иметь возможность увеличить версиюнапример, для выпуска с точки зрения исправлений.
- Конвейеры выпуска и 3 артефакта: хорошо, есть 3 артефакта, и пользователь должен указать все 3 версии вручную во время создания — довольно высокий риск неправильного нажатия. К сожалению, их 10… 10 умножьте 3 = 30 раз, чтобы сделать ошибку.
- Конвейер выпуска и 1 артефакт (приложение): рассмотрите только одну версию приложения и автоматически получите сценарии автоматизации и конфигурацию из feed, используя версию приложения. Может работать, но нет возможности наблюдать, какие артефакты будут использоваться, нет способа понизить рейтинг, единственная последняя версия артефактов (12.2.3. *).
- Укажите версию в группе переменных, подключенных к этапу (среды). Можно легко допустить ошибку, поскольку release использует версию baken группы переменных. Если вы обновите VG, но не создадите выпуск — это будет эпический сбой. Более того, нет представления о том, что он собирается устанавливать / обновлять и т. Д.
Пожалуйста, поделитесь своими идеями о том, как управлять несколькими версиями артефактов в рамках одного выпуска продукта, чтобы сделать процесс более надежным и понятным с некоторой гибкостью.
Ответ №1:
Вот как это работает для меня с помощью этого простого подхода:-
- Единый конвейер сборки с множеством заданий агента, где каждое представляет артефакт.
- Итак, здесь вы будете публиковать разные артефакты в отдельных папках и автоматически увеличивать версии «При необходимости», используя скрипт для каждого, и в конце все будут находиться под одним и тем же buildId.
- Другой вариант, если разделение не требуется, чтобы все они находились под одним и тем же заданием агента.
- Единый конвейер выпуска, связанный с этим большим вложенным артефактом, который будет выполнять развертывание.
- Здесь также, если требуется разделение, могут быть многоступенчатые или многоагентные задания, как и раньше.
- Увеличение версий либо будет происходить вручную при фиксации, либо сценарии будут автоматически увеличивать каждую сборку.
- Я бы предпочел первое, поскольку второе не указывает на какие-либо изменения.
- Вероятность того, что разработчик забудет обновить версию, будет такой же, как если разработчик внесет ошибку, чтобы ее можно было исправить позже.
Затем в конце у вас есть один выпуск => Одна сборка => Много версий => Фиксация.
Комментарии:
1. Спасибо, что поделились. Я попытаюсь объединить эти идеи, чтобы применить их к моей конфигурации.
2. Если это сработает для вас позже, отметьте принятый ответ 😉
3. Конечно, как только я попытаюсь применить это к текущему подходу, по крайней мере, концептуально.