CruiseControl.Net продолжает строить, даже если нет нового источника - PullRequest
1 голос
/ 13 мая 2011

У меня проблема с настройкой CC.Net. Моя текущая настройка для проекта выглядит следующим образом (очищена, чтобы избавиться от конфиденциальной информации):

<project name="WebApp">
    <workingDirectory>c:\cc\WebApp\Code</workingDirectory>
    <artifactDirectory>c:\cc\WebApp\Artifacts</artifactDirectory>   
    <webURL>http://example.com/ccnet</webURL>
    <modificationDelaySeconds>10</modificationDelaySeconds> 
    <triggers>
      <intervalTrigger seconds="30" name="continuous" />
    </triggers>


<sourcecontrol type="multi">
<sourceControls autogetsource="true">
<svn>
    <trunkUrl>svn+ssh://build@192.168.2.12/webapp/trunk</trunkUrl>
    <executable>C:\Program Files\SlikSvn\bin\svn.exe</executable>
    <username>build</username>
    <password>********</password>
    <revisionNumbers>true</revisionNumbers>
</svn>
<svn>
    <trunkUrl>svn+ssh://build@192.168.2.12/dataservice/trunk</trunkUrl>
    <executable>C:\Program Files\SlikSvn\bin\svn.exe</executable>
    <username>build</username>
    <password>********</password>
    <revisionNumbers>true</revisionNumbers>
    <workingDirectory>..\dataservice</workingDirectory>
</svn>  
<svn>
    <trunkUrl>svn+ssh://build@192.168.2.12/WCFProxyClasses/WCFProxyClasses/trunk</trunkUrl>
    <executable>C:\Program Files\SlikSvn\bin\svn.exe</executable>
    <username>build</username>
    <password>********</password>
    <revisionNumbers>true</revisionNumbers>
    <workingDirectory>..\proxies\WCFProxyClasses</workingDirectory>
</svn>  
</sourceControls>
</sourcecontrol>

    <tasks>
        <msbuild>
            <executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
            <projectFile>WebApp/WebApp.msbuild</projectFile>
            <targets>BeforeBuild;Build;AfterBuild</targets>
            <timeout>300</timeout>
            <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
        </msbuild>
    </tasks>

    <publishers>
        <rss/>
        <xmllogger />
        <statistics />
        <!-- Email build report to development and QA team -->
        <email from="ccnet_noreply@example.com" mailhost="mailhost" mailport="25" includeDetails="TRUE" mailhostUsername="" mailhostPassword="" useSSL="FALSE">
        <users>                 
            <user name="Developer" group="devs" address="dev@example.com"/>
        </users>
        <groups>
            <group name="devs"/>
        </groups>
        <converters/>
        <modifierNotificationTypes>
            <NotificationType>Always</NotificationType>
        </modifierNotificationTypes>
        </email>
        <modificationHistory  onlyLogWhenChangesFound="true" />
    </publishers>
</project>

У нас есть несколько целей контроля версий, потому что проект веб-приложения зависит от других. Я не уверен, является ли это причиной проблемы (к которой я клоню) или нет. У меня мало опыта (нет!) С CC.Net, поэтому я не знаю, где искать. У нас есть другие проекты в файле конфигурации, но ни один из них не имеет нескольких целей контроля версий, и все они ведут себя как положено.

Проблема этого проекта заключается в том, что независимо от изменений управления исходным кодом, он просто пытается построить каждые 30 секунд! Насколько я понимаю, тег <revisionNumbers> должен заставить CC.Net ждать новой редакции исходного кода перед повторной сборкой, однако он просто продолжает собирать и отправлять электронные письма каждые 30 секунд.

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

Спасибо!

РЕДАКТИРОВАТЬ -

Если это помогает, определенный выше проект не может быть собран каждый раз. Это связано с тем, что некоторые сторонние библиотеки DLL, указанные в проекте, недоступны на сервере CC.Net. Может ли неудачная сборка вызывать повторную попытку каждые 30 секунд?

Ответы [ 2 ]

2 голосов
/ 14 мая 2011

Попробуйте

  • Явно упомяните buildCondition="IfModificationExists" (хотя это должно быть по умолчанию ) ...
  • Оставляйте только один источник контроля за раз, чтобы найти виновника, который продолжает вызывать сборку.
  • Проверьте журнал (вывод svn), чтобы увидеть, что обновляется (как предложил Педро).

НТН

0 голосов
/ 13 мая 2011

Что в списке сборки для проекта указано, что оно было изменено?Для svn вы должны увидеть раздел «Изменения с момента последней сборки», за которым следуют список файлов, время проверки и комментарии о регистрации.

Есть ли что-то в сборке, которая проверяет файлы обратно в svn (AssemblyInfo.cs может быть?)

Редактировать:

Вы упоминаете в своем обновлении, что он не в состоянии строить каждый раз.Пока это не исправлено, я подозреваю, что вы получите такие повторы.Однако почему он продолжает повторяться, я не совсем уверен.Одно из различий между вашими сценариями и теми, которые мы используем, заключается в том, что мы не используем тег «revisionNumbers» для элементов SVN (хотя я не уверен, что это проблема.)

Вы также упоминаете, что он нашел 534модификации с момента последней сборки.Это число увеличивается с каждой новой сборкой?Если число увеличивается, у вас может быть что-то еще, проверяющее файл или файлы в хранилище, что может привести к запуску другой сборки.

...