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, он выполняет следующее:
- Добавляется в (пустую) очередь в позиции 0.
- Aquires блокировка нашей очереди разработки.
- Забирает сборку из очереди, не находит модификаций.
- Запускает саму сборку, начинает сборку.
- Что-то помещает другой запрос Forcebuild в очередь в позицию 1.
- Шаг 5 повторяется, но он видит, что запрос уже находится в очереди, и он отменяется.
- Успешно завершает строительство.
- Снимает блокировку с нашей очереди на разработку.
- 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>