Автоматизация выпуска программного обеспечения - PullRequest
2 голосов
/ 15 января 2009

Я обновляю код ежедневно и фиксирую все изменения в каждом случае, чтобы новый код был доступен на сервере все время.

Я хотел бы упростить автоматизацию сборки и контроль версий. В настоящее время я создаю проект и редактирую его название версии (Project Name vx.x.x) каждый раз, когда это требуется начальнику, что неэффективно по времени.

Кто-нибудь знает, каков наилучший способ постоянно обновлять версию программного обеспечения с соответствующим номером версии?

Для разработки я использую VS 2008 и для подрывной работы Tortoise SVN. Я пытался использовать Nant для автоматизации Buid, но не имел никакого опыта с ним и не знаю, как я могу отредактировать номер версии в VS или передать номер версии черепахи в Nant, чтобы он мог генерировать имя проекта с номером выпуска. *

Спасибо!

Ответы [ 3 ]

3 голосов
/ 15 января 2009

Использование номера версии Subversions не является оптимальным. Я попробовал это один раз, но это не удалось, потому что номер набора изменений относится только к файлам, которые изменены в этом конкретном наборе изменений.

В любом случае, я бы порекомендовал использовать для этого CruiseControl, так как он способен отслеживать номер сборки отдельно от subversion. CC передает некоторые свойства скрипту сборки, среди которых есть метка сборки, называемая "$ {label}". Используйте это в своем скрипте nant.

Инвестируйте время, чтобы выучить (n) муравья и CC.

3 голосов
/ 15 января 2009

Во-первых, не пытайтесь использовать подстановку ключевых слов SVN для этого. Если вы поместите ключевое слово $ rev $ в файл и включите подстановку ключевых слов с помощью свойства svn: Keywords, вы не получите желаемого. Вы получите последнюю ревизию, которая повлияла на файл, содержащий ключевое слово, вместо последней ревизии, которая повлияла на любую часть проекта.

Правильный способ сделать это - использовать вывод команды svnversion . Возможно, вам потребуется написать небольшой скрипт, который вызывает эту команду, захватывает выходные данные и затем использует номер редакции для обновления файла проекта или файла исходного кода где-то.

Если вы можете положиться на устанавливаемый TortoiseSVN, более простой альтернативой является использование утилиты SubWCRev.exe , например:

SubWCRev.exe . VersionInfo.template VersionInfo.cs

где VersionInfo.template будет выглядеть для проекта C # следующим образом:

using System.Reflection;

[assembly: AssemblyVersion("2.0.0.$WCREV$")]
[assembly: AssemblyFileVersion("2.0.0.$WCREV$")]

Предупреждение: номера версий Windows состоят из 4 чисел, каждое из которых ограничено 16 битами. Номера ревизий Subversion могут легко стать больше.

0 голосов
/ 15 января 2009

Я сам в процессе автоматизации. Все еще изучаем варианты, но это кажется простым и надежным:

  • Создайте «служебный» проект с именем «_FULL_BUILD_» в глобальном рабочем пространстве VC 6.0.

  • _FULL_BUILD_ не имеет собственных файлов, но это зависит от всех других проектов, при условии, что все они построены (пере) правильно.

  • Одна ранняя зависимость - это другой служебный проект, который использует sed.exe из http://sourceforge.net/projects/unxutils для увеличения версии, которая хранится в своем собственном файле при необходимости:

    • Для отладочных сборок просто увеличьте номер сборки.
    • Для сборок выпуска увеличьте последнюю часть номера версии.
    • Основные / второстепенные версии требуют ручного редактирования.

"Волшебством" был пустой служебный проект, который также позволяет вам создавать собственные правила сборки, которые (например) могут копировать весь проект в точку отбрасывания для вашей команды QA.

Пожалуйста, дайте нам знать, если вы найдете лучшее решение.

Удачи!

...