Как параллельная разработка / ветвление в вашей VCS влияет на настройку репозитория артефактов сборки и выпуски для QA?
В нашей компании мы разветвляем нашу VCS для параллельной разработки, и у нас часто нет особых предупреждений о том, какая ветвь будет поставлять в каком порядке.
Для нумерации версий я хотел бы разместить идентификатор ветки, чтобы показать QA, из какой ветки пришла сборка. Любые сборки из ствола будут иметь «нормальный» номер версии без идентификатора ветки в нем:
trunk: 1.1.0
branch: 1.1.0.MyBranch
branch: 1.1.0.AnotherBranch
Первоначально я думал иметь один репозиторий артефактов сборки на каждую ветку и один главный репозиторий для ствола.
Но если моя нумерация версий включает ветку, тогда номер версии будет неправильным для продукта (если я собираю и выпускаю из ветки).
Можно ли решить эту проблему только для выпуска из ствола?
Кроме того, в какой момент мне следует начать отправку сборок команды QA из ствола, а не сборок из ветки?
Моя текущая идея состоит в том, чтобы убедить руководство назначить команду разработчиков для порядка выпуска (скажем, через неделю до выпуска) и объединить их ветку с основной веткой. Затем QA начинает получать сборки ствола вместо сборок веток, и команда разработчиков, чья ветка была объединена, исправляет любые ошибки непосредственно в стволе, а не в ветке.
* ОБНОВЛЕНИЕ *
В частности, я использую SVN для VCS и Artifactory для своего репозитория. Я использую Ivy для управления зависимостями.
Просмотр справки Artifactory по макетам репозитория ( Макеты репозитория ):
"a sequence of literals that identifies the base revision part of the artifact
version, excluding any integration information"
"'1.5.10', or in case of an integration revision '1.2-SNAPSHOT' the base revision
is '1.2'"
Этот макет и макеты по умолчанию для Maven и Ivy подсказывают мне, что это более распространено:
MyRepo
MyLib
1.1.0 (this is the dll from trunk)
-MyLib.dll
1.1.0.MyBranch-SNAPSHOT (dev builds from the "MyBranch" branch)
-MyLib.dll
1.1.0.AnotherBranch-SNAPSHOT (dev builds from the "AnotherBranch" branch)
-MyLib.dll
Это типичный макет репо для использования Ivy? Я бы предположил, что для этого потребуется использовать функцию ветки Ivy для разрешения зависимостей во время сборки для правильной папки ветки в репо?
* ОБНОВЛЕНИЕ 2 *
Вот моя текущая структура Artifactory:
MySnapshotRepo
CompanyName
CompanyName.MyLib
1.0-SNAPSHOT
MyLib.dll (snapshot builds from the dev branch)
MyReleaseRepo
CompanyName
CompanyName.MyLib
1.0.0
MyLib.dll (release builds from the trunk)
1.0.1
MyLib.dll (release builds from the trunk)
1.0.2
MyLib.dll (release builds from the trunk)
В моем файле IvySettings.xml у меня есть:
.. но я не хочу использовать значение по умолчанию. Я хотел бы указать, в какую цепочку преобразователей нужно разрешить, когда я вызываю команду разрешения Ivy. Примерно так:
Это неправильный способ переключения репозиториев, с которыми мне нужно работать?
Задача публикации имеет атрибут «решатель», который у меня отлично работает аналогичным образом.
Кроме того, в моем конкретном примере у меня может быть несколько ветвей SVN, соответствующих нескольким репозиториям снимков Artifactory.Могу ли я параметризовать способ разрешения на какие репозитории? Или более правильный способ поместить снимки из всех веток в одно репо и использовать функцию ветки Ivy?
Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.