CruiseControl.NET номера версий автоматической сборки - PullRequest
1 голос
/ 21 июля 2011

Это сложный вопрос, поэтому я надеюсь, что объясню это достаточно хорошо.

Фон

Я нахожусь в процессе автоматизации процесса сборки с помощью CruiseControl.NET и NAnt.Самая большая головная боль, которую я прилагаю, - это формат номера версии и CruiseControl.NET, требующий метку от метки перед запуском проекта сборки.

В настоящее время разработчик использует Visual Studio 2008 для создания отладочной, выпускной и пользовательской сборок.Каждая из этих конфигураций вызывает BuildInc (пользовательский инструмент), который читает файл (version.ver), увеличивает номер чтения версии, генерирует файл .rc2 для исполняемых свойств и записывает новую версию обратно в version.ver.Очевидно, что версии .ver и .rc2 изменяются и нуждаются в проверке поддержки в источнике, прежде чем разработчик пометит релиз в системе контроля версий.Метка в контроле исходного кода - это номер версии, т.е. 1.2.3.4 -> 1-2-3-4.

. В настоящее время новая автоматическая сборка запускает проект CruiseControl.NET, который вызывает скрипт NAnt.Сценарий NAnt запускает Visual Studio и публикует сборки в каталоге выпуска.Это прекрасно работает, скрипт NAnt может получить предыдущий и новый номер версии, читая version.ver.Проблема в том, что CruiseControl.NET помечает источник и отображает метку на приборной панели.Новый номер версии / метка генерируется во время сборки, и какой номер для увеличения хранится в проекте Visual Studio в аргументах задач предварительной ссылки.

Номера версий

Номера версий представлены в уникальном формате и различаются между сборками, выполняемыми в магистральной сети и ветвях разработки.Сборки, выполненные на ветви, предназначены для улучшений, которые после завершения объединяются в магистраль.

Магистраль

  • Формат: [Major]. [Merge]. [Release] .00 т.е. 42.01.02.00
  • Major: номер системы
  • Merge: увеличивается при объединении ветви
  • Release: увеличивается при исправлении ошибок

Branch

  • Формат [Major] .00. [Stream]. [Release] т.е. 42.00.01.01
  • Major: системный номер
  • Stream: номер потока, связывающий его с другимиКомпоненты для улучшения
  • Релиз: Увеличено при исправлении ошибок

Числа начинаются с префикса ноль, т.е. 01, 02. Это не очень хорошо работает с любыми инструментами, с которыми я сталкивался.(Я надеюсь изменить это)

Вопросы

После всего этого, я надеюсь, вы понимаете мои проблемы.

  1. Какие общие улучшенияМогу ли я перейти на автоматизированный процесс?
  2. Как вы думаете, номер версии должен быть известен до начала сборки?
  3. Должна ли система автоматической сборки автоматически увеличивать номер версии?
  4. Стоит ли менять формат номера версии?
  5. Любые другие комментарии, мне действительно нужно больше мнений.

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

Примечания

Язык - C ++, платформа - Windows, а управление исходным кодом - CVS.

1 Ответ

1 голос
/ 22 июля 2011

Вы можете добавить событие пост-сборки в свой проект, которое запишет последний номер сборки (в любом формате, который вы хотите) в текстовый файл, скажем label.txt, в вашей исходной папке.

Затем добавьте метку типа fileLabeller, чтобы получить номер последней версии, который будет брать номер версии из label.txt.

<labeller type="fileLabeller">
   <labelFilePath>ProjectFolder\label.txt</labelFilePath>
   <allowDuplicateSubsequentLabels>true</allowDuplicateSubsequentLabels>
</labeller>
...