Проекты .NET автоматизируют сборку с помощью NAnt / MSBuild + SVN - PullRequest
4 голосов
/ 10 февраля 2009

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

Мой репозиторий SVN выглядит следующим образом

\projects
   \projectA (a product)
       \tags
           \1.0.0.1
           \1.0.0.2
           ...
       \trunk
           \src
              \proj1  (a VS C# project)
              \proj2
           \documentation

Затем у меня есть сетевой ресурс с папкой для каждого проекта (продукта), которая, в свою очередь, содержит двоичные файлы, письменную документацию и сгенерированную документацию API (через NDoc - каждый проект может иметь файл .ndoc в хранилище) для каждой исторической версии (из папки SVN), а также для последней версии (из trunk ).

По сути, я хочу сделать в запланированной пакетной сборке следующие шаги:

  1. изучить папку SVN проекта и определить тег s , отсутствующий в общем сетевом ресурсе
  2. для каждого из этих тегов
    1. проверить папку с тегами
    2. сборка (с конфигурацией выпуска)
    3. скопировать получившиеся двоичные файлы в общий сетевой ресурс
    4. поиск файлов .ndoc
    5. генерировать файлы CHM через NDoc
    6. скопировать полученные файлы CHM в общую сетевую папку
  3. сделать так же, как в 2., но для HEAD ревизии trunk

Теперь проблема в том, что я понятия не имею, с чего начать. Я не храню файлы .sln в хранилище, но могу заменить их файлами MSBuild, которые, в свою очередь, создают проекты C #, относящиеся к конкретному продукту.

Я полагаю, что наиболее тревожной частью является проверка хранилища для тегов, которые еще не были обработаны - то есть поиск тегов и сравнение их со структурой каталогов проекта в общей сетевой папке. Я понятия не имею, как это сделать в любом из инструментов сборки (NAnt, MSBuild).

Не могли бы вы дать мне несколько советов о том, как подходить к этой задаче в целом, а также подробно? Мне все равно, если я использую NAnt, MSBuild или оба. Я знаю, что это может быть довольно сложно, но каждая идея и фрагмент NAnt / MSBuild будут очень полезны.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 13 февраля 2009

В NantContrib есть команда SVN, которую вы можете использовать для получения информации. Любой запрос, который вы можете запустить из командной строки SVN, вы сможете использовать, а затем проанализировать результат. Таким образом, вы можете выполнить поиск по тегам, сопоставить теги с папками в общем сетевом ресурсе, а затем выполнить проверку на предмет отсутствия, используя команду svn-checkout. После этого запустите команду msbuild для каждой папки проекта.

Альтернативой, если вы хотите иметь автоматические сборки, было бы создание ветви вместо тега, так как похоже, что вы создаете версии, а не просто тег. Если вы создаете ветку, у вас может быть автоматизированный инструмент сборки, такой как CruiseControl.net или TeamCity, который контролирует ваш репозиторий. Затем, если файл зарегистрирован в филиале или соединительной линии, вы можете запустить автоматическую сборку.

Между двумя вы должны быть в состоянии справиться с этим. Если вы хотите получить хороший пример некоторых сценариев сборки, в которых реализована документация (с zip и дистрибутивом), проверьте проект Castle здесь: http://www.castleproject.org/

Они даже используют некоторые из команд SVN для получения таких вещей, как номер редакции, а не для автоматической генерации информационных файлов сборки.

1 голос
/ 16 мая 2009

UppercuT может быть отличным ресурсом для проверки фрагментов NAnt.

http://projectuppercut.org/

Несколько хороших объяснений здесь: UppercuT

0 голосов
/ 12 февраля 2009

Можете ли вы, чтобы NAnt или MSBuild вызывали Perl или какой-либо другой сценарий языка сценариев для проверки хранилища svn и выполнения проверки? Если вы можете запустить сборку также из командной строки, похоже, все остальное - просто больше сценариев.

...