【问题标题】:CruiseControl.Net “Duplicate Node Detected” using precompilerCruiseControl.Net 使用预编译器“检测到重复节点”
【发布时间】:2009-05-19 14:14:27
【问题描述】:

我正在使用 CruiseControl.Net 并尝试采用文章 http://www.zorched.net/2009/01/30/dry-your-cruisecontrolnet-configuration/ 中说明的干方法我有一个简单的 ccnet.config 和一个简单的项目文件 Test-project.xml。配置评估工具告诉我“检测到重复节点”。任何线索/提示都会很棒。

Ccnet.config

<cruisecontrol  xmlns:cb="urn:ccnet.config.builder">
  <!-- Standard Inits -->
  <cb:define name="StandardInit-block">
    <webURL>http://localhost/ccnet-dashboard/?_action_ViewProjectReport=true&amp;server=local&amp;project=Introvert</webURL>
    <artifactDirectory>D:\CC\$(ProjName)\artifact\</artifactDirectory>
    <modificationDelaySeconds>120</modificationDelaySeconds>
  </cb:define>

  <!-- Trigger run weekly -->
  <!-- Vars $(TriggerTime), $(ProjName) -->
  <cb:define name="WeeklyBuild-block">
    <triggers>
      <scheduleTrigger time="$(TriggerTime)" buildCondition="ForceBuild" name="Nightly build at $(TriggerTime) for $(ProjName)">
        <weekDays>
          <weekDay>Monday</weekDay>
          <weekDay>Tuesday</weekDay>
          <weekDay>Wednesday</weekDay>
          <weekDay>Thursday</weekDay>
          <weekDay>Friday</weekDay>
        </weekDays>
      </scheduleTrigger>
    </triggers>
  </cb:define>

  <cb:include href="Test-project.xml" xmlns:cb="urn:ccnet.config.builder"/>
</cruisecontrol>

测试项目.xml

<project name="Test" xmlns:cb="urn:ccnet.config.builder">

    <cb:scope
      TriggerTime="2:30"
      ProjName="Test"
      ProjStarPath="" >

      <!-- Standard block -->
      <cb:StandardInit-block/>

      <!-- Trigger block -->
      <cb:WeeklyBuild-block/>

      <tasks></tasks>
      <publishers></publishers>

    </cb:scope>
  </project>

【问题讨论】:

  • 你能把其他文件的代码贴出来吗? 中的内容可能有用。另外,我假设您发布的这段代码包含在另一个文件中,我们也可以看到吗?
  • 两个文件都包含在内,但第一个文件的格式不太理想。也许您可以对其进行编辑,使其格式化。
  • 我正在尝试弄清楚如何格式化 XML 以使 ti 看起来不错,可以提示吗?我尝试将其全部包含在 <prep> 中,但它似乎仍然将其视为标记而不是代码。</prep>
  • 只需选择所有的 xml 并点击工具栏中包含一些二进制文件的按钮

标签: cruisecontrol.net


【解决方案1】:

本周我也遇到了这个问题,因为我也决定将这种 DRY 方法用于 CruiseControl。

在启动 criusecontrol 服务后(然后它很快就失败了),我查看了日志文件(C:\CruiseControl.NET\server\ccnet.log 对我来说......),我看到了类似的内容:

ThoughtWorks.CruiseControl.Core.Config.ConfigurationException:检测到重复节点:...(导致问题的其余节点)

这至少让我知道它有什么问题。

【讨论】:

  • Houndey 是对的,如果您查看日志,它会告诉您重复节点是什么...
【解决方案2】:

ccnet.config:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder"> 

    <!-- Standard Inits --> 
    <cb:define name="StandardInit-block">

        <!--<webURL>http://localhost/ccnet-dashboard/?_action_ViewProjectReport=true&server=local&project=Introvert</webURL>-->
        <artifactDirectory>D:\CC\$(ProjName)\artifact\</artifactDirectory> 
        <modificationDelaySeconds>120</modificationDelaySeconds> 

    </cb:define>

    <!-- Trigger run weekly --> 

    <!-- Vars $(TriggerTime), $(ProjName) --> 
    <cb:define name="WeeklyBuild-block"> 

        <triggers> 
            <scheduleTrigger time="$(TriggerTime)" buildCondition="ForceBuild" name="Nightly build at $(TriggerTime) for $(ProjName)"> 
                <weekDays> 
                    <weekDay>Monday</weekDay> 
                    <weekDay>Tuesday</weekDay> 
                    <weekDay>Wednesday</weekDay> 
                    <weekDay>Thursday</weekDay> 
                    <weekDay>Friday</weekDay> 
                </weekDays>
            </scheduleTrigger> 
        </triggers> 

    </cb:define>

    <cb:include href="Test-project.xml" /> 

</cruisecontrol>

测试项目.xml:

<project name="Test" xmlns:cb="urn:ccnet.config.builder">

    <cb:scope
        TriggerTime="2:30"
        ProjName="Test"
        ProjStarPath="" >

    <!-- Standard block -->
    <cb:StandardInit-block/>

    <!-- Trigger block -->
    <cb:WeeklyBuild-block/>

    <tasks/>
    <publishers/>

    </cb:scope>
</project>

刚刚在我的机器上通过 Cruisecontrol 运行了这么多,我得到的唯一问题是 ccnet.config 文件中的 URL。删除它,我粘贴在此文本上方的代码可以正常工作。

【讨论】:

  • 安迪,当我删除 xmlns:cb="urn:ccnet.config.builder" 时,我得到了无效的 xml。 与 xml 中的 相同。您所指的开始标签的名称是什么?再看源码。它更具可读性。
  • 我删除了您提到的网络行,但仍然没有乐趣。我在我的工作站上运行它。我的 ccnet.config 文件位于 C:\Program Files\CruiseControl.NET\server。我的 test-project.xml 位于同一目录中。当我启动 CC 时,它说……没有加载的类型被标记为与 xml 节点(#text)匹配的反射类型属性。是不是找不到xml文件?
  • 您使用的是最新版本的 CruiseControl 吗?我相信 标签是最近才添加的。
  • 谢谢安迪,就是这样,我的 CruiseControl 不是最新的。
【解决方案3】:

不确定在此处发布您的 xml 文件是否是疏忽,但您在 Test-project.xml 中没有结尾 &lt;/project&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2012-09-25
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多