5

Что я хочу сделать, это иметь CI и автоматическую сборку для всех моих ветвей в репозитории. Я хотел бы, чтобы каждая сборка этих веб-приложений имела свой собственный проект и размещалась как виртуальный каталог (или его эквивалент) на сайте филиалов. Было бы здорово создать новую ветку и начать автоматическую интеграцию и процесс сборки. Добавление нового виртуального каталога в IIS не имеет большого значения, я в порядке с этим, если остальное просто встанет на свои места.Автоматические сборки ветвей с SVN

Для примера:

http://branch.domain.com/branch101/

http://branch.domain.com/otherBranchName/

В настоящее время я использую SVN, Нана и CruiseControl.NET, но я открыт другой сервер непрерывной интеграции или построить если это требует ситуация.

+0

не уверен, что я понимаю вопрос - вы ищете новый проект CC.net, который будет автоматически создан при вводе кода?- или просто лучший способ настроить ccnet для создания нескольких филиалов - вы упомянули виртуальный каталог - мы говорим о веб-приложениях? – Richard

+0

Да, для обоих, я отредактировал вопрос, чтобы быть более ясным (надеюсь!) –

ответ

1

Я не понимаю настоящего вопроса. В любом случае, я предлагаю вам Хадсон (http://hudson-ci.org/).

Это прост в использовании. Легко настраивается с помощью XML-файлов. У этого есть удаленный API.

+0

+1 для Хадсона. (Остерегайтесь, однако: если вы делаете сборку на нескольких платформах, Hudson не будет переходить к следующей сборке, пока каждая платформа не будет завершена. Это означает, что самая медленная машина для сборки/тестирования замедляет всех остальных. По крайней мере, это было в прошлом году когда мы его попробовали.) – sbi

+0

Вы уверены? Для платформы вы имеете в виду работу хадсона? Потому что вы можете установить более одного «Build Executor». Я никогда не использую его, но Хадсон поддерживает режим «мастер/ведомый» для распространения сборок. –

+0

@ungarida: Хадсон был одним из наиболее перспективных инструментов CI, которые мы оценили, и ISTR, которые мы отказались от этого из-за этого. Но я даже не помню, какие «рабочие места» для Хадсона больше, поэтому я думаю, это означает, что нет, я не уверен. – sbi

1

Я не думаю, что вы хотите, насколько автоматическая настройка ваших проектов непрерывной интеграции на основе ветвления. Однако, если ваши филиалы довольно стандартизированы и не изменяются резко, было бы довольно легко написать сценарий powershell (или какой-либо сценарий, который вы предпочитаете), чтобы настроить новые проекты.

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

3

Это можно сделать, но многое из этого зависит от ваших скриптов сборки. Если вы сообщите cc.net отслеживать папку svn верхнего уровня, например, у вас есть монитор проекта:

, а не http://myserver.com/svn/project/trunk. Если какие-либо изменения видны в http://myserver.com/svn/project, он начнет сборку.

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

Другим вариантом будет проект cc.net, который был разработан, чтобы ничего не делать, кроме добавления новых проектов в ваш cc.net. (Назовите проект BranchBuilder) Я бы использовал препроцессор в cc.net и имел файл .config верхнего уровня, который просто включал проект для магистрали и каждой ветки. Проект построителя ветвей будет вести учет корневого пути на svn. Если бы он увидел какие-либо изменения, он бы посмотрел, есть ли новые ветви с момента последней сборки. Если бы он был один, он мог бы создать файл ccnet-branchname.config для этой ветви, создать vdir, а затем обновить корневой файл ccnet.config дополнительным включением.

После обновления конфигурации ccnet cc.net распознает, что файл конфигурации был изменен и перезагрузите конфигурацию, добавив новый проект филиала. Этот проект филиала начнет работать и построит новую ветку.

+0

Это, на мой взгляд, очень плохая идея. Я думаю, вы слишком много автоматизируете. Насколько сложно было бы добавить блок в файл ccnet.config по сравнению с этим решением? –

+1

Мы делаем это вручную. Просто потому, что вы можете что-то сделать, это не значит, что вы должны. Тем не менее, он будет выполнять автоматическую сборку для функции ветвления, которую просит OP. Тем не менее, я не знаю, как часто они отрасли. Это может быть десятки раз в день. Компьютеры предназначены для выполнения повторяющихся задач, не так ли? – PilotBob

+1

@JoshKodroff Я думаю, что это вопрос мнения, «дорогое» ветвление - причина, по которой многие разработки размываются вместе в одной строке (увеличивая риск). Необходимость входа в систему для перенастройки процесса сборки, похоже, добавляет значительные затраты на ветвление. –

Смежные вопросы