Автоматизированные сборки веток с SVN - PullRequest
5 голосов
/ 06 августа 2009

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

Например:

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

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

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

Ответы [ 3 ]

3 голосов
/ 30 октября 2009

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

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

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

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

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

1 голос
/ 07 августа 2009

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

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

1 голос
/ 06 августа 2009

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

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

...