Ветви параллельной разработки, репозитории артефактов сборки и выпуски контроля качества

Как параллельная разработка / ветвление в вашей 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)
  1. Как мне указать Ivy на конкретное репо во время сборки? Для выпуска мне нужно только вытащить двоичные файлы из репозитория выпуска. Для сборки моментального снимка я могу вытащить двоичные файлы, если они отображаются в репозитории снимков, а если они отсутствуют, я могу вытащить их из репозитория релизов. Я понимаю, как связывать репозитории, просто не понимаю, как их переключать.

В моем файле IvySettings.xml у меня есть:


.. но я не хочу использовать значение по умолчанию. Я хотел бы указать, в какую цепочку преобразователей нужно разрешить, когда я вызываю команду разрешения Ivy. Примерно так:


Это неправильный способ переключения репозиториев, с которыми мне нужно работать?

Задача публикации имеет атрибут «решатель», который у меня отлично работает аналогичным образом.

Кроме того, в моем конкретном примере у меня может быть несколько ветвей SVN, соответствующих нескольким репозиториям снимков Artifactory.Могу ли я параметризовать способ разрешения на какие репозитории? Или более правильный способ поместить снимки из всех веток в одно репо и использовать функцию ветки Ivy?

Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.

6
задан DonBecker 14 December 2011 в 21:16
поделиться