For Instance:
我想建立项目A.项目A取决于项目B和项目C.
修改 每个项目在SVN中都有自己的主干: [储存库] /项目A /中继线 [储存库] /项目B /中继线 [储存库] /项目C /中继线
我的问题有几个部分:
我是CCNET的新手,所以如果有一些基本概念,请不要认为我知道它们。细节是我的朋友:-D
修改 我正在使用SVN作为我的源代码控制提供商。
答案 0 :(得分:10)
成功构建ProjectB时,可以使用Project Trigger启动ProjectA,如下所示:
<project name="ProjectA">
<triggers>
<projectTrigger project="ProjectB">
<triggerStatus>Success</triggerStatus>
<innerTrigger type="intervalTrigger"
seconds="60"
buildCondition="ForceBuild" />
</projectTrigger>
</triggers>
...
</project>
每隔60秒轮询一次ProjectB的构建结果,如果有新的成功构建,则会触发ProjectA。默认情况下,它将在同一CCNET服务器上查找项目,但您可以将其指向另一个具有serverUri
属性的项目。如果您还希望在更新Subversion存储库时进行构建,则可以为ProjectA添加另一个触发器。
如果您在同一服务器上运行构建,则可以将它们放在同一队列中,如果它们可能以任何方式相互干扰,否则您可以同时构建它们。
答案 1 :(得分:3)
我已经建立了一个大约20个解决方案的构建系统,可能还有100个项目使用NAnt脚本和CCNet作为构建引擎。为了处理解决方案之间的依赖关系,我使用了基于Java的工具Ivy。
Ivy使用二进制依赖项,其中依赖项使用版本信息进行限定。编译的输出存储在二进制存储库中,即文件系统或甚至在subversion中。编译二进制依赖项时会下载到文件系统。
这种方法适用于具有相对松散的耦合模块(由MS解决方案表示)的项目,这些模块相对独立地发展。对于像你这样的设置,每个项目/解决方案都有一个单独的主干,项目/解决方案确实需要松散耦合,否则随着系统变大,你会发现自己做了大量的标记和分支。
如果您需要在项目之间建立更紧密的耦合,我建议将它们移动到同一个主干。
注意:Ivy必须被称为命令行可执行文件,并且您没有获得良好的Java Ant集成。