У меня есть несколько проектов, которые разрабатываются и выпускаются в разных отраслях, а именно: разработка и выпуск. Процесс работает очень хорошо, но, к сожалению, он имеет некоторые недостатки, и мне было интересно, есть ли в моей ситуации более эффективная схема управления версиями.
Основное развитие происходит в ветке разработки (т.е. Subversion trunk, но это не имеет большого значения), когда команда разработчиков фиксирует свои изменения. После сборки и упаковки артефактов, Jenkins развертывает их в maven-хранилище и сервер приложений для интеграции приложений. Это DEVELOPMENT-SNAPSHOT и в основном это ветка функций, содержащая все разработанные функции на одной общей ветке:
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>D.16-SNAPSHOT</version>
Когда одно конкретное изменение бизнеса выполняется и запрашивается командой QA, это одно изменение затем объединяется с ветвью выпуска (ветки/выпуск). Дженкинс развертывает полученный артефакт на сервер приложений QA:
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>R.16-SNAPSHOT</version>
Затем появляется релиз, который происходит через maven-release-плагин в версии версии релиза программного обеспечения (который создает тег обслуживания/ветку для быстрой исправления ошибок). (R.16-SNAPSHOT = > R.16)
Разделы разработки и выпуска в настоящее время версируются как D.16-SNAPSHOT и R.16-SNAPSHOT соответственно. Это позволяет разделить артефакты в репозитории maven, но создает проблему с различными механизмами maven, которые основаны на стандартном стиле управления версиями maven. И это также нарушает управление версиями OSGI.
Теперь, как бы вы назвали артефакты maven и версию maven в такой схеме? Есть ли способ лучше? Может быть, я мог бы внести некоторые изменения в структуры maven, кроме простого изменения схем управления версиями и именованиями? Но мне нужно, чтобы ветки развития и QA (выпуска) разделялись отдельно.
Будет ли разумным альтернативой классификатор "разработки" / "производства" maven?
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>16-SNAPSHOT</version>
<classifier>D</classifier>