2009-03-02 5 views
3

Я пытаюсь использовать CruiseControl 2.7.3, (оригинал), чтобы построить проект Java, который находится в репозитории SVN.Использование SVN с CruiseControl?

В нашей конфигурации круиза используется svn plugin для комплекта модификаций. Когда обнаружена модификация, сборка запланирована с использованием Ant. Этот файл сборки Ant затем использует svnant Ant Task для выполнения полной проверки проекта. Некоторое время у нас был этот набор для проверки «HEAD», но у нас были случаи, когда сборка не срабатывала для проверки или два, потому что проверка произошла после проверки набора модификаций, но до того, как вызов муравья svn checkout. В результате мы пытаемся изменить файл сборки муравья, чтобы использовать номер версии, который получает проверка модификации.

На странице конфигурации конфигурации CruiseControl утверждается, что свойство, svnrevision, установлено и передано строителям, так же как свойство метки имеет значение labelincrementers. Кажется, он не устанавливается, когда я нажимаю кнопку force build.

Есть ли что-то, что я должен сделать, чтобы это исходило?

+0

Какой именно журнал? Cruisecontrol.log, журнал проекта или журнал сборки? – Steen

+0

О, и, возможно, добавив тег «subversion» на ваш вопрос, вы увидите еще несколько глаз на вашем пути? – Steen

+0

Я добавлю его на вопрос. –

ответ

1

Глядя на код управления источником SVN, кажется, что svnrevision следует передать вместе с разработчиком и, таким образом, к вашему вызову Ant. Вы пытались использовать свойство из своего скрипта Ant?

В ответ на вопрос в комментарии:

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

+0

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

+0

Это потому, что в случае сборки силы не было изменений, поэтому номер модификации модификации отсутствует. В этом случае svnlabelincrementer выйдет последним за то, что у вас есть на месте, что также будет последним. –

+0

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

0

Ссылка на обращение cruisecontrol ant не имеет никакого отношения к метке (svn), которая строится как таковая. Метка svn используется для аннотации имен сборки, тогда как build.log - это всего лишь выход из муравья, поскольку он передается через cruisecontrol.

Если вы хотели бы иметь номер версии, написанного для муравья выхода сборки, есть два основных способа:

Один из способов, чтобы иметь муравьев взаимодействуют с СВН в некотором роде. Svn в мураве доступен только через contrib ant task от тигра, поэтому нет ничего пустого в ваш файл ant. Но с этим в вашей сборке вы можете сделать svn info и получить номер версии в качестве свойств муравья в вашем распоряжении.

Другой способ - использовать svnlabelincrementer, чтобы присвоить номер версии метке и передать это на скрипт муравья, используя buildproperties, которые передаются от cruisecontrol к скриптам сборки. Как отметил Джей в комментариях, метка содержит только последнюю успешную ревизию сборки, которая не то, что он хочет. Исправление было предложено на this blog, но выполнение работы в файле сборки муравьев кажется более подходящим.

+0

Svnlabelincrementer автоматически отправляет свойство $ {label}. К сожалению, это не гарантирует, что это будет только последняя редакция с рабочего пути. Поэтому вы не можете передать его в команду обновления. –

0

Можете ли вы использовать настройку тихих периодов? После фиксации CruiseControl может подождать некоторое время (скажем, 30 секунд), прежде чем начать сборку.

Он не будет уничтожать отдельные сборки для каждой фиксации. Скорее, совершает около того же времени, начнет одну сборку.

+0

Установка quietperiod только задерживает сборку для ожидания дополнительных проверок, которые могут следовать за проверкой, которая вызовет сборку. Это было действительно полезно для CVS, но для SVN это менее полезно. Однако это не помогает моей проблеме. –

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