【问题标题】:CruiseControl.Net continues to build even if there's no new source即使没有新来源,CruiseControl.Net 也会继续构建
【发布时间】:2011-05-13 04:15:44
【问题描述】:

我在配置 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>

我们有多个源代码控制目标,因为 Web 应用项目依赖于其他项目。我不确定这是否是问题的原因(我要解决的问题)。我对 CC.Net 的经验很少(没有!)所以我真的不知道去哪里找。我们在配置文件中有其他项目,但它们都没有多个源代码控制目标,并且它们的行为都符合预期。

这个项目的问题是,无论源代码控制如何变化,它都会尝试每 30 秒构建一次!据我了解,&lt;revisionNumbers&gt; 标签应该让 CC.Net 在再次构建之前等待新的源版本,但它只是每 30 秒不断构建和发送电子邮件。

如果您需要更多信息,我会提供。我希望有人认识到这里出了什么问题,或者以前遇到过这个问题,并且可能对我有一些建议。

谢谢!

编辑-

如果有帮助,上面定义的项目每次都无法构建。这是由于项目中引用的某些第 3 方 DLL 在 CC.Net 服务器上不可用。失败的构建是否会导致它每 30 秒“重试”一次?

【问题讨论】:

  • 我没有在文档中看到&lt;sourceControls&gt; 上的autogetsource="true",您确定它是正确的吗?默认情况下,&lt;intervalTrigger/&gt; 应仅基于&lt;buildCondition&gt;IfModificationExists&lt;/buildCondition&gt;,因此您的源代码控制必须在每次检查时报告更改。为什么在这里使用多个源代码控制块而不是 svn externals?

标签: .net configuration cruisecontrol.net


【解决方案1】:

试试

  • 明确提及buildCondition="IfModificationExists"(尽管应该是default)...
  • 一次只留下一个源代码控制,以找出不断触发构建的罪魁祸首。
  • 检查日志(svn 输出)以查看正在更新的内容(如 Pedro 提供的)。

HTH

【讨论】:

  • 一次尝试了一个源代码控制,所有三个都单独工作。这似乎是多源控制的问题。我已经用项目触发器重新设计了配置文件。现在似乎一切正常。
【解决方案2】:

在项目的构建摘要中,它列出了哪些内容已被修改?对于 svn,您应该会看到“自上次构建以来的修改”部分,然后是文件列表、签入时间和签入 cmets。

构建中是否有任何东西将文件检查回 svn(可能是 AssemblyInfo.cs?)

编辑:

您在更新中提到每次都无法构建。在解决此问题之前,我怀疑您将进行此类重试。但是,为什么它不断重试,我不完全确定。您的脚本和我们使用的脚本之间的一个区别是,我们不为 svn 项目使用“revisionNumbers”标签(尽管我不确定这是问题所在。)

您还提到它自上次构建以来发现了 534 处修改。每个新版本都会增加这个数字吗?如果数量在增加,您可能有其他东西将一个或多个文件检查到存储库中,这将导致另一个构建开始。

【讨论】:

  • 最新的构建日志显示“集成请求:构建 (IfModificationExists) 从连续触发”。 “自上次构建以来的修改 (534)”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2013-07-02
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 2019-08-29
  • 2017-03-29
相关资源
最近更新 更多