Используя SVN с CruiseControl?
Я пытаюсь использовать CruiseControl 2.7.3 (оригинал) для создания проекта Java, который находится в репозитории SVN.
Моя круизная конфигурация использует плагин svn для набора модификаций. Когда обнаружена модификация, сборка планируется с использованием Ant. Затем этот файл сборки Ant использует задачу Ant svnant для полной проверки проекта. Какое-то время у нас был этот набор, чтобы просто извлекать "HEAD", но у нас были случаи, когда сборка не запускалась для проверки или двух, потому что проверка произошла после проверки набора изменений, но до вызова ant для svn оформить заказ. В результате мы пытаемся изменить файл сборки ant, чтобы использовать номер редакции, который получает проверка модификации.
На странице "Справка по конфигурации CruiseControl" утверждается, что свойство svnrevision установлено и передано сборщикам, так же как свойство label указано labelincrementers. Кажется, он не устанавливается, когда я нажимаю кнопку принудительной сборки.
Есть ли что-то, что мне нужно сделать, чтобы это пошло?
3 ответа
Глядя на код для управления исходным кодом SVN, кажется, что svnrevision должна быть передана компоновщику и, следовательно, вашему вызову Ant. Вы пытались использовать свойство из вашего скрипта Ant?
В ответ на вопрос в комментарии:
Это связано с тем, что в случае принудительной сборки модификации не было, поэтому номер редакции модификации отсутствует. В этом случае svnlabelincrementer передаст номер последней версии для того, что у вас есть локально, который также будет самым последним.
Вызов муравья cruisecontrol не имеет ничего общего с меткой (svn), которая создается как таковая. Метка svn используется для аннотирования имен сборок, тогда как build.log на самом деле является просто выводом ant, так как он передается через cruisecontrol.
Если вы хотите, чтобы номер редакции записывался в вывод сборки ant, в основном есть два способа:
Один из способов - заставить муравья каким-то образом взаимодействовать с SVN. Svn in ant доступен только через задачу contrib ant от tigris, поэтому его не так просто поместить в файл ant. Но с этим в вашей сборке вы можете сделать svn info и получить номер ревизии как свойства ant в вашем распоряжении.
Другой способ - использовать svnlabelincrementer, чтобы присвоить метке номер редакции и передать его в сценарий ant, используя свойства build, которые передаются из cruisecontrol в сценарии сборки. Как упоминал Джей в комментариях, метка содержит только последнюю успешную ревизию сборки, а это не то, что он хочет. Исправление было предложено в этом блоге, но выполнение работы в файле сборки ant кажется более подходящим.
Можете ли вы использовать настройку quietperiod? После коммита CruiseControl может подождать некоторое время (скажем, 30 секунд), прежде чем начать сборку.
Он не будет запускать отдельные сборки для каждого коммита. Скорее, коммиты примерно в одно и то же время начнут одну сборку.