Набор модификации CruiseControl не выполняется, когда svn указывает на URL - PullRequest
2 голосов
/ 13 мая 2010

В моей текущей настройке CruiseControl я использую следующую цель:

<modificationset quietperiod="30">
       <svn RepositoryLocation="http://my/url/repo/trunk" />
</modificationset>

Я делаю простую регистрацию пустого текстового файла, и впоследствии сообщения, которые я получаю в журнале CruiseControl, выглядят следующим образом:

[cc]May-13 15:53:56 Project       - Project mine:  bootstrapping
[cc]May-13 15:53:56 jectController- mine Controller: build progress event: bootstrapping
[cc]May-13 15:53:56 Project       - Project mine:  checking for modifications
[cc]May-13 15:53:56 jectController- mine Controller: build progress event: checking for modifications
[cc]May-13 15:53:59 Project       - Project mine:  No modifications found, build not necessary.
[cc]May-13 15:53:59 Project       - Project mine:  idle
[cc]May-13 15:53:59 jectController- connectfour Controller: build progress event: idle
[cc]May-13 15:53:59 Project       - Project mine:  next build in 1 minutes
[cc]May-13 15:53:59 Project       - Project mine:  waiting for next time to build
[cc]May-13 15:53:59 jectController- mine Controller: build progress event: waiting for next time to build

Черепаха: TortoiseSVN 1.6.8, сборка 19260 - 32-битная, 2010/04/16 20: 20: 11
CruiseControl: 2.8.3

Ответы [ 3 ]

2 голосов
/ 22 мая 2010

Может быть, вам нужна локально проверенная версия репозитория, чтобы CruiseControl было с чем сравнить, чтобы он мог обнаруживать изменения?

Способ, которым мы делаем это в нашей настройке CruiseControl:

У нас есть начальная процедура проверки, которая проверяет все необходимые проекты для сборки. Для этого мы используем скрипт / командный файл, который работает напрямую с svn из командной строки.

Затем мы используем следующее в нашем установочном файле CruiseControl:

<modificationset quietperiod="60">        
  <svn username="${svn.user}" 
       password="${svn.password}" 
       localWorkingCopy="${dir.checkout}/db4oj" />
</modificationset>

Для каждого проекта, который мы проверяем, у нас есть одна запись SVN, как указано выше в наборе модификаций.

Свойство dir.checkout будет указывать на конкретный путь в файловой системе.

1 голос
/ 21 мая 2010

Просто, чтобы дать вам еще одно назначение данных, я попробовал это с моей (довольно старой) настройкой CruiseControl, и это сработало.

  • CruiseControl v2.5
  • Сервер Subversion v1.5.5 (r34862)
  • Apache 2.0

Я использовал svn: // url, поэтому я изменил http-URL, чтобы он соответствовал вашему тесту, перезапустил круиз-контроль. Некоторое время ждал (я отвлекся на час), затем внес изменения в один из моих файлов в SVN. Вскоре после этого началась новая сборка, вызванная модификацией в SVN.

РЕДАКТИРОВАТЬ: Чтобы уточнить, мой круиз-контроль отслеживал SVN на что-то вроде svn://buildserver/svnrepo/project. Ваш OP упоминает, используя http URL. Чтобы приблизиться к вашему тестовому сценарию, я также хотел использовать http-URL. Я подключил SVN через Apache, поэтому я просто изменил URL, который я использовал, чтобы Apache представлял репозиторий SVN, например. http://devserver/svn/svnrepo/project чтобы приблизиться к вашему тестовому сценарию.

Я хочу показать, что то, что вы пытаетесь сделать, работает.

Вот обработанный фрагмент из моего файла CruiseControl config.xml. Я использую maven (1.1beta3!) Для сборки. Крик, этот материал старый, но работает.

<project buildafterfailed="false" name="someproject-int">
        <plugin name="svn" classname="net.sourceforge.cruisecontrol.sourcecontrols.SVN">
        </plugin>
        <plugin name="svnbootstrapper" classname="net.sourceforge.cruisecontrol.bootstrappers.SVNBootstrapper">
        </plugin>    
    <labelincrementer separator="_" defaultLabel="rev_1"/>
    <bootstrappers>
      <currentbuildstatusbootstrapper file="p:/build/cc-logs/someproject-int/status.txt">
      </currentbuildstatusbootstrapper>
    </bootstrappers>
    <modificationset>
      <svn repositoryLocation="http://dev/svn/project/trunk" 
      localWorkingCopy="p:/build/checkout/int/project"
      username="build" password="****">
      </svn>      
    </modificationset>
    <schedule interval="300">
      <maven goal="scm:svn-update-project|compile" 
        projectfile="p:/build/checkout/int/project/project.xml" 
        mavenscript="d:/Programs/build/Maven-1.1b3/bin/maven.bat">
      </maven>
    </schedule>
    <log dir="p:/build/cc-logs/project" encoding="ISO-8859-1">
    </log>
    <publishers>
    [...]
    </publishers>
  </project>
1 голос
/ 14 мая 2010

У меня нет полного ответа, но вот что вы можете попробовать:

  1. Включите отладочный вывод из CruiseControl, он будет распечатывать фактические команды, выпущенные механизмом CruiseControl.
  2. Тогда вы сможете повторно запустить команды вручную и проверить их вывод.

EDIT:

Добавление простой конфигурации log4j:

log4j.logger.net.sourceforge.cruisecontrol.sourcecontrols=DEBUG

приводит к тому, что в журнал CruiseControl добавляется не так много сообщений. Еще достаточно, чтобы узнать, какая команда svn выполнена. В своих журналах я видел:

2010-05-17 20:57:16,808 [BuildQueueThread] INFO  BuildQueue    - now adding to the thread queue: test1
2010-05-17 20:57:16,821 [Thread-22] INFO  Project       - Project test1:  bootstrapping
2010-05-17 20:57:16,821 [Thread-22] INFO  jectController- test1 Controller: build progress event: bootstrapping
2010-05-17 20:57:16,821 [Thread-22] INFO  Project       - Project test1:  checking for modifications
2010-05-17 20:57:16,821 [Thread-22] INFO  jectController- test1 Controller: build progress event: checking for modifications
2010-05-17 20:57:16,828 [Thread-22] DEBUG SVN           - Executing command: svn log --non-interactive --xml -v -r {2010-05-16T22:00:00Z}:{2010-05-17T18:57:16Z} http://localhost/svn/SomeProject/

Теперь, если я выполнил ту же команду вручную, я получаю «пустой» XML:

$  svn log --non-interactive --xml -v -r {2010-05-16T22:00:00Z}:{2010-05-17T18:57:16Z} http://localhost/svn/SomeProject/
<?xml version="1.0"?>
<log>
</log>

... в отличие от более широкого диапазона времени, например ::

$  svn log --non-interactive --xml -v -r {2001-01-01T01:00:00Z}:{2010-05-17T18:57:16Z} http://localhost/svn/SomeProject/
[...]
...