Я работаю над проектом, который использует студию Mulesofts Anypoint для разработки API. Anypoint studio использует Maven для создания своих проектов и управления версиями. В настоящее время мы используем модель ветвления с Git -потоком без веток релиза (feature / development / master), а инструментом CI является Jenkins. Мы хотим перейти на Azure -DevOps с ветвлением на основе магистрали.
Текущая настройка CI git flow работает следующим образом:
- Функция слияния с Dev
- Jenkins запускает на Dev и создает пакет с Maven
- Jenkins развертывает пакет на D
- Проверьте свой API на D, если его хорошо вручную запустить конвейер выпуска Jenkins
- Дженкинс объединит dev и master
- Maven создает релиз; создать пакет (например, v0.1) и подготовить следующую итерацию разработки (v0.2-SNAPSHOT) в master
- Jenkins Развертывает пакет на A и P
- Объединить мастер обратно в Dev
Итак, у нас есть 2 отдельных конвейера: dev и release. Я надеюсь, что разработка на основе транков упрощает этот процесс, сводя его к одному конвейеру, который запускается слиянием с мастером. Но я не знаю, как обращаться с версиями с Maven здесь.
Это то, что я имею в виду для магистрального конвейера (Feature / Master):
- Функция слияния с Master
- Azure запускает конвейеры Maven выпуск
- (!) Maven берет версию 0.1-SNAPSHOT, создает версию выпуска 0.1 и помещает ее ... куда? в ветке релиза?
- Maven затем создает следующую рабочую версию 0.2-SNAPSHOT в основной ветке
- (!) , что снова вызовет Azure конвейеров, создавая al oop
Кто-нибудь, имеющий опыт разработки на основе магистральных сетей в Maven, решает эту проблему? Я бы предпочел сделать это без ветки релиза, потому что выпущенные пакеты уже предоставляют функциональность ветки релиза.
На первый взгляд этот ответ , похоже, решает мою проблему, но он просто игнорирует проблема, обходя его и просто используя ха sh.