代码之家  ›  专栏  ›  技术社区  ›  Brock Woolf

为什么CruiseControl.net项目触发器不工作?

  •  4
  • Brock Woolf  · 技术社区  · 15 年前

    我在CruiseControl.net上有一个项目,我试图为它创建一个时间表,使其在大多数天的某个时间运行。

    问题是它不起作用。在移除项目触发器之前,ccnet仪表板中的计划时间似乎不会更新。然后它就开始工作了……但它不是在建设一个如此无用的项目。

    在我的 CCNET.CONFIG :

      <project>
        <name>MyProject-nightly</name>
    
          <triggers>  
            <multiTrigger operator="And"> 
                <triggers> 
                    <projectTrigger project="MyProject" /> 
                    <scheduleTrigger time="11:23" buildCondition="ForceBuild">
                        <weekDays>
                            <weekDay>Monday</weekDay>
                            <weekDay>Tuesday</weekDay>
                            <weekDay>Wednesday</weekDay>
                            <weekDay>Thursday</weekDay>
                            <weekDay>Friday</weekDay>
                            <weekDay>Saturday</weekDay>
                        </weekDays>
                    </scheduleTrigger>
                </triggers> 
            </multiTrigger>
        </triggers>
    
      </project>
    

    删除此行时:

    <projectTrigger project="MyProject" />
    

    这个 next build time 在仪表板中,它会正确更新,并在指定的时间执行,但不会发生明显的事情。

    这是怎么回事?我正在使用 CruiseControl.net版本:1.5.7256.1

    2 回复  |  直到 15 年前
        1
  •  3
  •   Benjamin Baumann    15 年前

    您不必创建不同的项目。我认为您也误解了ProjectTrigger,ProjectTrigger是在另一个项目已完成生成时启动生成的(在您的情况下,它将在我的项目完成生成时每晚开始生成我的项目,我认为这不是您想要的)。

    你到底想要什么样的行为?

    如果您希望您的项目从源代码管理修改开始构建,并且必须像这样配置:

    <triggers> 
        <intervalTrigger name="Polling From source control" seconds="60" BuildCondition="IfModificationExists"/>
        <scheduleTrigger time="23:30" buildCondition="ForceBuild" name="Nighly Build">
            <weekDay>Monday</weekDay>
            <weekDay>Tuesday</weekDay>
            <weekDay>Wednesday</weekDay>
            <weekDay>Thursday</weekDay>
            <weekDay>Friday</weekDay>
            <weekDay>Saturday</weekDay>
        </scheduleTrigger>
    </triggers> 
    

    它严格地等同于一个带或运算符的多索具。

        2
  •  2
  •   Brock Woolf    15 年前

    我确实找到了一种不同的方法来实现这一点,简单地说就是不做一个单独的项目,而把它放在一个项目中:

    <triggers> 
        <multiTrigger operator="And"> 
            <triggers>
            <intervalTrigger name="Continuous Integration" seconds="5" buildCondition="IfModificationExists" initialSeconds="30" />
                <scheduleTrigger time="20:00" buildCondition="ForceBuild">
                    <weekDays>
                        <weekDay>Saturday</weekDay>
                    </weekDays>
                </scheduleTrigger>
            </triggers> 
        </multiTrigger>
    </triggers>
    

    这将在周六晚上8:00为代码提供一个预定的构建,并且如果源代码发生更改,它将进行构建。

    希望这能帮助其他人实现同样的目标。