CruiseControl: Изменено обнаружено, но временные метки в рабочей копии не изменились - PullRequest
0 голосов
/ 12 января 2011

Удовольствие и игры с CruiseControl.

Я подключил Java-проект к локальной установке CruiseControl на моем компьютере с Windows XP.

Мой файл config.xml запускается каждую минуту,и строит мой проект из моего скрипта ant.

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

Это локальная копия, с которой работает мой build.xml, поэтому я беспокоюсь, что, хотя мой config.xml настроен правильно, так что CruiseControl обнаруживает изменение, мой скрипт Ant не работает с рабочей копиейкоторый синхронизирован с соединительной линией.

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

Config xml:

<?xml version="1.0"?>
<cruisecontrol>

    <dashboard url="http://localhost:8080/dashboard" postinterval="1" />

    <project name="myProject" requireModification="false">
        <listeners>
                <currentbuildstatuslistener file="logs/myProject/status.txt"/>
            </listeners>

            <bootstrappers>
            <svnbootstrapper file="build.xml" 
            username="cruise_control" password="password" 
                localWorkingCopy="projects\myProject" />
        </bootstrappers>

        <modificationset>
            <svn repositoryLocation="https://path/to/myTrunk" 
                localWorkingCopy="projects/myProject"
                 username="cruise_control" password="password">
                </svn>
            </modificationset>

            <schedule interval="60" >
            <ant buildfile="build.xml" anthome="C:\Program Files\apache-ant-1.8.2" antWorkingDir="projects/myProject/" />
            </schedule>

        <log>
                <merge dir="C:\Program Files\CruiseControl\projects\myProject\reports\junit" pattern="TEST*.xml" />
        </log> 

        <publishers>
            <artifactspublisher dir="C:\Program Files\CruiseControl\projects\myProject\dist"
                dest="C:\Program Files\CruiseControl\artifacts\myProject"
                moveInsteadOfCopy="true"  />
        </publishers>   
    </project>
</cruisecontrol>

Файл конфигурации панели:

 <dashboard>
    <buildloop
        logsdir="C:/Program Files/CruiseControl/logs/"
        artifactsdir="C:/Program Files/CruiseControl/artifacts/" />
    <features allowforcebuild="true" />
    <trackingtool projectname="" baseurl="" keywords=""/>
    <subtabs>
        <subtab class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget" />
    </subtabs>
</dashboard>

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 21 сентября 2011

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

  1. Если у меня не было локальной рабочей копии в самый первый раз, SVNBootsTrapper НЕ обновляет мой локальный рабочий каталог.Я должен либо сделать явный «svn checkout» из командной строки или через скрипт ant, либо вручную переместить код в этот локальный рабочий каталог.После этого «SVN Boots Trapper» может обновить мою локальную рабочую директорию / копию с изменениями в репозитории.Это то, как работает SVNBoots trapper ИЛИ это подход, который мы должны использовать для первого хранилища локальных рабочих копий?

2. У меня было только

<bootstrappers>
    <svnbootstrapper file="build.xml" localWorkingCopy="projects\myProject" />
</bootstrappers>

и нет поля UID / PWD.В моем старом Cruisecontrol до версии 2.8.4 это работало бы нормально.Но здесь это терпит неудачу и спрашивает меня:

ProjectController - 'myProject' Контроллер: событие прогресса сборки: начальная загрузка SVNBootstrapper - svn: Невозможно получить пароль

И это не удается.Единственный способ обойти эту проблему с паролем:

a.Либо добавьте атрибуты имя пользователя и пароль (как у Бена выше) ИЛИ

b.Запустите команду обновления cmd line svn, укажите uid / pwd при появлении запроса.А затем скажите «да», чтобы сохранить ваш пароль «незашифрованным».Есть ли способ обойти оба подхода (а) и (б) ко второму вопросу?

0 голосов
/ 13 января 2011

Я обнаружил проблему.

Мой загрузчик был следующим:

<svnbootstrapper file="build.xml" 
            username="cruise_control" password="password" 
                localWorkingCopy="projects\myProject" />

С помощью свойства file файл svnbootsraper отслеживает только указанный файл.

Когдаэто свойство удаляется, загрузчик контролирует всю рабочую копию:

<svnbootstrapper username="cruise_control" password="password" 
                localWorkingCopy="projects\myProject" />

Казалось бы, распространенной ошибкой является предположение, что атрибутificationsetset выполняет обновление SVN.На самом деле, он только прослушивает приращения номера редакции.Является ли svnbootstrapper, который выполняет обновление SVN.

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 13 января 2011

IIRC Cruisecontrol обнаруживает изменения в хранилище, но не обновляет рабочую копию автоматически. Таким образом, одна возможность состоит в том, что в вашем сценарии сборки нет кода для обновления рабочей копии с изменениями в хранилище (т.е. выполните svn update).

...