Jac*_*cob 5 .net cruisecontrol.net continuous-integration
在我们的.NET软件开发商店中,我们设置了CruiseControl.NET来构建28个项目,其中一些是相互依赖的.每个项目大致代表一个Visual Studio项目或Flex库与单元测试配对.我很恼火的是,我没有找到一个好的方法来确保项目按照表示依赖关系的顺序构建.
这就是我在做的事情:
在某种程度上,此设置有效.主要问题是如果某人对项目A和项目B中的代码进行了更改,其中项目B依赖于项目A.有时,项目B将在项目A之前构建.因为项目A尚未构建,所以可以有时导致项目B破裂.这是暂时的,因为间隔触发器会导致项目A稍后构建,并且其成功构建会触发项目B重建并得到修复.我想要避免的是在项目A之前建造项目B,以便不会发生中间破坏.
您使用哪些实践来正确管理CruiseControl.NET服务器上的相互依赖性?此时,我不愿意改为像TeamCity这样的非自由持续集成包.
不要将依赖项放在CC.NET项目设置中.您需要通过NAnt脚本控制项目构建顺序.您不必在解决方案级别上构建,您可以在单个项目级别上构建.
<target name="Project1" depends="Projects2" description="Builds project 1">
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
<workingDirectory>C:\dev\ccnet</workingDirectory>
<projectFile>CCNet.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Build;Test</targets>
<timeout>900</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
</target>
<target name="Project2" depends="Projects3" description="Builds project 2">
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
<workingDirectory>C:\dev\ccnet</workingDirectory>
<projectFile>CCNet.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Build;Test</targets>
<timeout>900</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
</target>
<target name="Project3" description="Builds Project 3">
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
<workingDirectory>C:\dev\ccnet</workingDirectory>
<projectFile>CCNet.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Build;Test</targets>
<timeout>900</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
</target>
Run Code Online (Sandbox Code Playgroud)
您可以在单个项目级别上运行单元测试,因此您不需要在多个项目上进行重复运行.
归档时间: |
|
查看次数: |
5884 次 |
最近记录: |