Вопрос

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

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

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

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

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

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

Решение

Мне нравится хадсон - ПРОСТ в настройке и работает "из коробки" с SVN.

Вы можете настроить его на сборку при каждой фиксации.

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

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

Редактировать

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

Другие советы

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

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

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

переключатель svn http://dryad.googlecode.com/svn/tags/' svn ls http://dryad.googlecode.com/svn/tags | хвост - № 1' дриады

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

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

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

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

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

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

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

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

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

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

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

Коммерческий продукт был рекламирован на этом сайте именно с этой целью!

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

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

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

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

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

Я использую NAntНАнтКонтриб) для автоматизированных сборок.Он автоматически проверяет репозиторий subversion на наличие изменений и (если таковые имеются) получает последнюю версию исходного кода и запускает сборку.

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

Как говорили другие ребята, вам нужен сервер непрерывной интеграции (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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top