Автоматизация сборок из тегов Subversion - PullRequest
12 голосов
/ 06 февраля 2009

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

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

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

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

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

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

Ответы [ 8 ]

8 голосов
/ 08 мая 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 'clean install', которая запускает сборку с использованием кода из версии с тегами.

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

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

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

5 голосов
/ 08 мая 2010

Мне нравится hudson - ЛЕГКО настроить и работает из коробки с SVN.

Вы можете настроить его на каждый коммит.

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

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

EDIT

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

4 голосов
/ 09 февраля 2009

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

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

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

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

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

3 голосов
/ 07 февраля 2009

CruiseControl.Net может легко автоматизировать автоматическую сборку из хранилищ Subversion.

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

2 голосов
/ 03 февраля 2011

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

http://wiki.hudson -ci.org / дисплей / HUDSON / Release + Plugin

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

2 голосов
/ 06 февраля 2009

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

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

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

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

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

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

  1. Обнаружение нового коммита
  2. Оформить заказ
  3. Запустите ваш скрипт сборки
  4. Метка при успешной сборке

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

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

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

1 голос
/ 06 февраля 2009

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

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

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