Как параллельная разработка / ветвление в вашей 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 показывают, что это большеcommon:
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?Я хотел бы предположить, что это потребует использования функции ветвления Айви для разрешения зависимостей во время сборки в правильную папку филиала в хранилище?
* ОБНОВЛЕНИЕ 2 *
Вот моя текущая структура Артефактуры:
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)
- Как указать Ivy на конкретный репово время сборки?Для релиза мне нужно только вытащить двоичные файлы из репозитория релиза.Для сборки снимка я могу вытащить двоичные файлы, если они появляются в репозитории моментальных снимков, если они отсутствуют, я могу вытащить их из репозитория релизов.Я понимаю, как связывать репозитории, я просто не понимаю, как их переключать.
В моем файле IvySettings.xml у меня есть:
<settings defaultResolver="defaultresolvechain"/>
.. но я не хочу значения по умолчанию.Я хотел бы указать, к какой цепочке распознавателей разрешать, когда я вызываю команду Ivy resol.Примерно так:
<ivy:resolve transitive="false" resolveMode="snapshot-resolve" conf="compile,test"/>
Это неправильный способ переключения репо, с которыми мне нужно разобраться?
Задача публикации имеет атрибут «resolver», который отлично работает для меня аналогичным образом.
Кроме того, в моем конкретном примере у меня может быть несколько веток SVN, соответствующих нескольким репозиториям моментальных снимков Artifactory.,Могу ли я параметризировать способ, которым я решаю, к каким репо?Или более правильный способ размещения моментальных снимков из всех веток в одном репо и использование функции ветки Ivy?
Пожалуйста, дайте мне знать, если вам нужна какая-либо другая информация для помощи.