Создание проекта с тегами с CruiseControl.Net - PullRequest
3 голосов
/ 13 июля 2009

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

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

Добавление папки в svn: // svn / tags / ProjectX /, например svn: // svn / tags / ProjectX / JulyCheckPoint следует извлечь вновь добавленный тег (svn: // svn / tags / ProjectX / JulyCheckPoint) в локальный каталог (D: \ temp \ tags \ ProjectX \ JulyCheckPoint) и запустить файл nant (D: \ temp \ tags \ ProjectX \ JulyCheckPoint \ nant.build)

Я знаю, что CruiseControl может отслеживать svn: // svn / tags / ProjectX / на наличие изменений, но я не уверен, как я собираюсь извлечь последний тег на локальный диск сервера сборки и запустить nant.build если я не знаю имя самого последнего тега. Я немного погуглил и считаю, что хуки svn post-commit могут быть чем-то, на что я должен обратить внимание.

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

Приветствие.

Ответы [ 4 ]

2 голосов
/ 13 июля 2009

Поскольку вы знаете, как отслеживать / svn / tags / ProjectX / на наличие изменений, вы можете запустить скрипт nant. Этот сценарий может выполнять команды для svn (см. Задачи svn в http://nantcontrib.sourceforge.net/release/0.85/help/tasks/index.html) для извлечения последней папки в / svn / tags / ProjectX /. Здесь вы можете использовать этот сценарий nant для вызова сценария nant в извлеченной папке, используя задача nant.

1 голос
/ 14 июля 2009

Это не отвечает на ваш вопрос, но мне любопытно, почему вы выбираете строить из тегов, а не из головы?

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

Мне действительно нравится эта статья Мартина Фаулера. Это очень помогло мне, когда я начал использовать непрерывную интеграцию.

0 голосов
/ 16 июля 2009

Цените всех парней помощи. Я решил дать предложениям acloutier и сделал статические файлы nant для каждого проекта, эти файлы nant всегда находятся на сервере сборки.

CruiseControl.Net (настройка на сервере сборки) отслеживает хранилище тегов для каждого проекта и запускает соответствующий статический файл NANT. Затем этот файл nant запускает некоторый код C #, который определяет имя последней добавленной папки в местоположении svn: // svn / tags / ProjectX /.

Зная имя последней добавленной папки, я могу выполнить svn-checkout для последнего помеченного проекта в svn: // svn / tags / ProjectX / в локальном местоположении и запустить файл nant в проекте.

Если кому-то понадобятся фрагменты кода или пояснения, я с удовольствием предоставлю их, когда приступлю к работе. Спасибо за помощь!

0 голосов
/ 13 июля 2009

я думаю, что единственный способ сделать это - использовать svn: externals, как я думаю, и настроить репозиторий, указывающий на ваш тег.

svn propget svn:externals blah

, а затем выполнить проверку, например, svn checkout http://svn/repos/blah

В CruiseControl.NET положить

<checkExternals>True</checkExternals>
<checkExternalsRecursive>True</checkExternalsRecursive>

в вашей конфигурации для этого проекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...