仅当成功构建另一个项目时,CCNet计划构建

时间:2012-03-01 13:25:22

标签: continuous-integration cruisecontrol.net

我正在尝试让CCNet在预定时间建立一个项目,但是只有在上次成功构建另一个项目时才会这样做。我有以下块:

<triggers>
  <multiTrigger operator="And">
    <triggers>
      <projectTrigger project="Trunk Integration Tests">
        <triggerStatus>Success</triggerStatus>
        <innerTrigger type="intervalTrigger" seconds="30" buildCondition="IfModificationsExist" />
      </projectTrigger>
      <scheduleTrigger time="15:00" buildCondition="ForceBuild" name="Scheduled" />
    </triggers>
  </multiTrigger>
</triggers>

要避免任何有关我为什么要这样做的问题;我们有一个小时运行一次的集成测试。上面代码所来自的构建是一个部署构建,它可以下载代码,编译并将代码推送到我们的服务器之一。我们有针对开发服务器,QA和登台的部署版本。

我遇到的问题是,在集成构建成功之后,昨天下午4:45这个版本被解雇了。 CCNet说构建原因是Build (ForceBuild) triggered from Scheduled

这里发生了什么,我怎样才能让它像我描述的那样工作?

2 个答案:

答案 0 :(得分:1)

我认为在这种情况下可以避免<multiTrigger>。您可以创建<projectTrigger>,并将其<innerTrigger>设置为<scheduleTrigger>的类型。像这样:

<triggers>
  <projectTrigger project="Trunk Integration Tests">
    <triggerStatus>Success</triggerStatus>
    <innerTrigger type="scheduleTrigger" time="15:00" buildCondition="IfModificationsExist" name="Scheduled" />
  </projectTrigger>
</triggers>

答案 1 :(得分:0)

我使用triggerFirstTime来触发计划间隔。

    <projectTrigger project="MyProject">
        <triggerStatus>Success</triggerStatus>
        <triggerFirstTime>true</triggerFirstTime>
        <innerTrigger type="scheduleTrigger" time="10:30" buildCondition="ForceBuild" name="Scheduled" />
    </projectTrigger>