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)DummyPackagedProjectDummyPackagedProject.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的(空)队列。
  • 对我们的开发队列产生锁定。
  • 从队列中拾取构建,发现没有修改。
  • 触发构建本身,开始构建。
  • 有些东西在位置1的队列中放置另一个Forcebuild请求。
  • 重复第5步,但它发现请求已经在队列中,并被取消。
  • 成功完成建设。
  • 释放我们的开发队列上的锁。
  • CCNET发现项目在队列中,并重新启动该过程(直到我中止构建)。
  • 所以我想知道是否有办法找出触发附加ForceBuild的是什么。 我是唯一一个与该项目合作的人,并且没有其他项目设置来触发ForceBuild。

    任何建议将不胜感激。

    编辑 :以下是项目配置的处理输出(由Simon Laing请求):

    <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.0Common7IDEdevenv.com</executable>
          <priority>Normal</priority>
          <project />
          <solutionfile><BUILDSRC>DummyPackagedProjectDummyPackagedProject.sln</solutionfile>
        </devenv>
      </tasks>
      <triggers />
      <webURL>http://BUILDSERVER/ccnet</webURL>
      <writeSummaryFile>False</writeSummaryFile>
    </project>
    
    链接地址: http://www.djcxy.com/p/23281.html

    上一篇: CruiseControl.NET Infinite Loop on ForceBuild

    下一篇: How do medium to large development teams constantly push changes to a DVCS?