CruiseControl.NET Бесконечный цикл на ForceBuild

Я пытался настроить проект в CCNET, который будет создаваться только тогда, когда кто-то заставляет его создавать (т. Е. Не будет проверять наличие изменений). Для этого я записал следующее определение в файл ccnet.config.

<project name="DummyPackagedProject-StagingRedeploy" description="Redeploys DummyPackagedProject after Staging Bump" queue="stageRedeploy">
  <state type="state" directory="$(BuildState)" />
  <artifactDirectory>$(BuildArt)\DummyPackagedProject-StagingRedeploy</artifactDirectory>
  <workingDirectory>$(BuildArt)\DummyPackagedProject</workingDirectory>
  <!-- No triggers; must be forced. -->

  <tasks>
    <devenv>
      <description>Build DummyPackagedProject</description>
      <executable>$(devenvexe)</executable>
      <solutionfile>$(BuildDir)\DummyPackagedProject\DummyPackagedProject.sln</solutionfile>
      <buildtype>Rebuild</buildtype>
      <configuration>Stage</configuration>
      <buildTimeoutSeconds>900</buildTimeoutSeconds>
    </devenv>
  </tasks>

  <publishers>
    <xmllogger />
    <artifactcleanup cleanUpMethod="KeepLastXBuilds" cleanUpValue="50" />
    <modificationHistory onlyLogWhenChangesFound="false" />
  </publishers>
</project>

(BuildArt, BuildDir, BuildState являются глобальными, указывающими на определенные каталоги, devenvexe является глобальным, указывающим на VS2013)

Я взглянул на файл журнала для самой CCNET (в отличие от файла, сгенерированного для запуска проекта), и он выглядит так, как только я запускаю Forcebuild, он выполняет следующее:

  1. Добавляется в (пустую) очередь в позиции 0.
  2. Aquires блокировка нашей очереди разработки.
  3. Забирает сборку из очереди, не находит модификаций.
  4. Запускает саму сборку, начинает сборку.
  5. Что-то помещает другой запрос Forcebuild в очередь в позицию 1.
  6. Шаг 5 повторяется, но он видит, что запрос уже находится в очереди, и он отменяется.
  7. Успешно завершает строительство.
  8. Снимает блокировку с нашей очереди на разработку.
  9. CCNET обнаруживает, что проект находится в очереди, и запускает процесс заново (пока я не прерву сборку).

Поэтому мне интересно, есть ли способ выяснить, что вызывает дополнительные ForceBuilds. Я единственный, кто работает с проектом, и никакие другие проекты не настроены для запуска ForceBuild.

Любой совет будет принята с благодарностью.

РЕДАКТИРОВАТЬ: Ниже представлен обработанный вывод для конфигурации проекта (запрошено Саймоном Лейнгом):

<project>
  <askForForceBuildReason>None</askForForceBuildReason>
  <category />
  <artifactDirectory><BUILDART>\DummyPackagedProject-StagingRedeploy</artifactDirectory>
  <workingDirectory><BUILDART>\DummyPackagedProject</workingDirectory>
  <description>Redeploys DummyPackagedProject after Staging Bump</description>
  <externalLinks />
  <initialState>Started</initialState>
  <labeller type="defaultlabeller">
    <incrementOnFailure>False</incrementOnFailure>
    <initialBuildLabel>1</initialBuildLabel>
    <labelFormat>0</labelFormat>
    <postfix />
    <prefix />
    <labelPrefixFile />
    <labelPrefixFileSearchPattern />
  </labeller>
  <maxSourceControlRetries>5</maxSourceControlRetries>
  <modificationDelaySeconds>0</modificationDelaySeconds>
  <name>DummyPackagedProject-StagingRedeploy</name>
  <parameters />
  <prebuild />
  <publishers>
    <xmllogger>
      <dynamicValues />
      <environment />
    </xmllogger>
    <artifactcleanup>
      <cleanUpMethod>KeepLastXBuilds</cleanUpMethod>
      <cleanUpValue>50</cleanUpValue>
      <dynamicValues />
      <environment />
    </artifactcleanup>
    <modificationHistory>
      <dynamicValues />
      <environment />
      <onlyLogWhenChangesFound>False</onlyLogWhenChangesFound>
    </modificationHistory>
  </publishers>
  <queue>stageRedeploy</queue>
  <queuePriority>0</queuePriority>
  <security type="inheritedProjectSecurity" />
  <showForceBuildButton>True</showForceBuildButton>
  <showStartStopButton>True</showStartStopButton>
  <sourcecontrol type="nullSourceControl">
    <alwaysModified>False</alwaysModified>
    <failGetModifications>False</failGetModifications>
    <failGetSource>False</failGetSource>
    <failLabelSourceControl>False</failLabelSourceControl>
  </sourcecontrol>
  <sourceControlErrorHandling>ReportEveryFailure</sourceControlErrorHandling>
  <startupMode>UseLastState</startupMode>
  <state type="state">
    <directory><BUILDSTATE></directory>
  </state>
  <stopProjectOnReachingMaxSourceControlRetries>False</stopProjectOnReachingMaxSourceControlRetries>
  <tasks>
    <devenv>
      <buildTimeoutSeconds>900</buildTimeoutSeconds>
      <buildtype>Rebuild</buildtype>
      <configuration>Stage</configuration>
      <description>Build DummyPackagedProject</description>
      <dynamicValues />
      <environment />
      <executable>C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.com</executable>
      <priority>Normal</priority>
      <project />
      <solutionfile><BUILDSRC>\DummyPackagedProject\DummyPackagedProject.sln</solutionfile>
    </devenv>
  </tasks>
  <triggers />
  <webURL>http://BUILDSERVER/ccnet</webURL>
  <writeSummaryFile>False</writeSummaryFile>
</project>

0 ответов