我正在使用CruiseControl.NET和git。我已经配置了两个项目,每个项目用于同一个存储库中的不同分支。我已为每个项目为buildCondition =“IfModificationExists”配置了intervalTrigger。问题是,只要存储库中的任何分支发生更改,而不是仅为项目配置的分支上的更改,就会为两个项目运行构建。
更具体地说,我已为相应的分支机构Production和ReleaseCandidate配置了两个CCNet项目,ProductionCI和ReleaseCandidateCI。当我将更改合并到分支ReleaseCandidate时,项目ReleaseCandidateCI按预期构建。但是,即使生产分支上没有任何变化,ProductCI项目也是如此。
这主要是一种烦恼,因为每个项目都会在每次需要时执行。它们只是在没用时执行。
这是我的配置:
文件trigger.xml
<cb:config-template xmlns:cb="urn:ccnet.config.builder">
<triggers>
<intervalTrigger
name="continuous"
seconds="600"
buildCondition="IfModificationExists"
initialSeconds="5"/>
</triggers>
</cb:config-template>
档案ccnet.config
<project>
<name>ProductionCI</name>
...
<cb:include href="trigger.xml" xmlns:cb="urn:ccnet.config.builder"/>
...
<sourcecontrol type="multi">
<sourceControls>
<git>
<repository>[url to repo]</repository>
<branch>Production</branch>
<workingDirectory>[path to directory]</workingDirectory>
<autoGetSource>true</autoGetSource>
</git>
</sourceControls>
</sourcecontrol>
...
</project>
<project>
<name>ReleaseCandidateCI</name>
...
<cb:include href="trigger.xml" xmlns:cb="urn:ccnet.config.builder"/>
...
<sourcecontrol type="multi">
<sourceControls>
<git>
<repository>[url to repo]</repository>
<branch>ReleaseCandidate</branch>
<workingDirectory>[path to directory]</workingDirectory>
<autoGetSource>true</autoGetSource>
</git>
</sourceControls>
</sourcecontrol>
...
</project>
注意:我知道使用单独的存储库而不是分支将解决这个问题,但它不是一个真正的选择。
提前感谢您的帮助。