Использование SVN с CruiseControl? - PullRequest
3 голосов
/ 02 марта 2009

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

Моя круизная конфигурация использует плагин svn для набора модификации. Когда обнаружена модификация, сборка планируется с использованием Ant. Затем этот файл сборки Ant использует задачу Ant svnant для полной проверки проекта. Какое-то время у нас был этот набор, чтобы просто извлекать "HEAD", но у нас были случаи, когда сборка не запускалась для проверки или двух, потому что проверка произошла после проверки набора изменений, но до вызова ant для svn checkout. В результате мы пытаемся изменить файл сборки ant, чтобы использовать номер редакции, который получает проверка модификации.

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

Есть ли что-то, что мне нужно сделать, чтобы это пошло?

Ответы [ 3 ]

1 голос
/ 04 марта 2009

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

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

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

0 голосов
/ 03 марта 2009

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

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

0 голосов
/ 03 марта 2009

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

Если вы хотите, чтобы номер редакции записывался в вывод сборки ant, в основном есть два способа:

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

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

...