Автоматизация сборки из тегов subversion

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

  • Проверить исходный код
  • Создание скрипта сборки из шаблона
  • Построить проект

Я почти уверен, что мог бы сделать это с помощью post-hook в subversion, но я пытаюсь найти способ сделать это с помощью чего-то другого, кроме хука subversion.

  • Имеет ли смысл отслеживать каталог тегов в репозитории subversion, чтобы запустить мой рабочий процесс?
  • Существуют ли какие-либо достойные инструменты, которые помогают в этом (если возможно, .NET было бы здорово).
  • Мне лучше просто написать движок для этого?

Мои предпочтения:

  • Существующий продукт, который выполняет все или часть этого
  • Если необходимо провести разработку, предпочтительнее использовать .NET.
  • Работает с Windows (у нас есть репозиторий на основе Linux, но все сборки происходят на Windows)

person Ajaxx    schedule 06.02.2009    source источник


Ответы (8)


Мне нравится hudson — ЛЕГКИЙ в настройке и готово работает с SVN.

Вы можете настроить его для сборки при каждом коммите.

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

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

РЕДАКТИРОВАТЬ

Недавно я добавил задание на свой сервер сборки hudson, который прослушивает чат google/gmail jabber. С помощью этого механизма я могу «повысить» «обычную» сборку до сборки выпуска. Я только что создал новое задание, которое выполняет шаги, необходимые для продвижения/публикации частной сборки в релиз-кандидат.

person Tim    schedule 07.05.2010

Я сделал это с помощью Hudson. В обычном слоте проверки Subversion у меня есть проверка для ствола:

http://dryad.googlecode.com/svn/trunk/dryad

Затем в качестве первого действия сборки у меня есть «выполнить оболочку», и в этой оболочке используйте переключатель svn для перехода на последний тег в репозитории:

svn switch http://dryad.googlecode.com/svn/tags/'svn ls http://dryad.googlecode.com/svn/tags | хвост -n 1' дриада

Следующим шагом сборки является команда maven «чистая установка», которая запускает сборку с использованием кода из помеченной версии.

Я еще не понял, как заставить Hudson начать с последней версии с тегами вместо того, чтобы переключаться, но переключатель работает. Затем вы можете настроить триггер при обновлении каталога тегов.

Это автоматизировано... немного глупо, но работает...

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

person ksclarke    schedule 07.05.2010

Похоже, вам нужен механизм сборки с непрерывной интеграцией, например CruiseControl или Hudson (hudson написан на Java, но ОЧЕНЬ прост в использовании в Windows).

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

Для того, что вы хотите, механизм сборки может отслеживать определенное место (скажем, «/branchs/release»). Если затем вы объединитесь с этой веткой, Hudson автоматически создаст проект, заархивирует артефакты и создаст для вас тег, если все прошло успешно (см. Плагин для тегов Subversion).

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

Я бы рекомендовал для этого Hudson.

person Jim T    schedule 09.02.2009
comment
Да, я думаю, вы понимаете, чего я хочу, а именно автоматизации работы механики релиза. Если я просто модель, это означает, что все, что делает разработчик, — это помечает релиз, а остальное — автоматизация рабочего процесса. Я посмотрю на Хадсона. Я использовал CC.NET, и он действительно не предназначен для этой работы. - person Ajaxx; 12.02.2009

CruiseControl.Net может легко автоматизировать автоматические сборки из репозиториев Subversion.

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

person Bert Huijben    schedule 07.02.2009

Именно для этой цели на этом сайте рекламируется коммерческий продукт!

http://www.finalbuilder.com/Default.aspx?tabid=314

Вам может понадобиться добавить post-hook в SVN, чтобы инициировать запуск сборки, если вы не хотите, чтобы она запускалась по расписанию.

person VBNight    schedule 06.02.2009

Я бы также рекомендовал Хадсон для этого. Я хотел сделать что-то подобное, создать тег и начать сборку. Вместо этого я решил использовать этот плагин для hudson:

http://wiki.hudson-ci.org/display/HUDSON/Release+Plugin

И используйте это для создания тега и явной сборки релиза.

person BigBen    schedule 03.02.2011

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

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

person M4N    schedule 06.02.2009

Как сказали другие ребята, вам нужен сервер непрерывной интеграции (CruiseControl, CruiseControl.Net, Hudson и т. д.). Хотя вы могли бы работать над своим скриптом сборки и обработчиками коммитов для реализации описанной вами функциональности, в конце концов вы обнаружите, что заново изобрели колесо (сервер непрерывной интеграции). Нет необходимости, для этой цели есть бесплатные решения.

Процесс будет работать немного иначе, чем вы описали выше. Сервер сборки будет:

  1. Обнаружить новую фиксацию
  2. Проверьте исходный код
  3. Запустите скрипт сборки
  4. Отметить успешную сборку

Коммит запускает процесс и создает тег, а не тег, запускающий процесс. Сервер делает это, отслеживая репозиторий svn, а не хук фиксации.

Ознакомьтесь с документацией CruiseControl.Net по этому вопросу, особенно с параметрами tagOnSuccess и tagBaseUrl. Hudson и CruiseControl должны иметь аналогичные опции.

http://confluence.public.thoughtworks.org/display/CCNET/Subversion+Source+Control+Block

person mcdon    schedule 06.08.2009