我发现在添加新项目时,我总是调整和调整CI设置。虽然毫无疑问现有代码很少有变化带来的好处,但是新项目或volitile代码似乎需要更多工作,因为我必须将每个项目配置为“集成”以及维护不断增长的CCNET.config文件。是否有更好的策略,无法构建实用程序来管理添加和修改CI设置?
答案 0 :(得分:3)
我做了一些事情试图控制它:
1)将配置文件拆分为两个。我有一个文件大部分保持不变并包含一组常量,例如
<?xml version="1.0" encoding="utf-8"?>
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<!-- Constant definition used by the projecct config to prevent changes being required for each iteration -->
<cb:define branch="branch name for source control"/>
<cb:define ciserver="Server name in here"/>
<cb:define devenv="Path to DEVENV"/>
<cb:define nunit="Path to NUNIT"/>
<cb:define cruisecontrol="Cruisecontrol Path"/>
<!-- Include file to the standard CI project definitions. This file is kept under source control -->
<cb:include href="config\CCProjects.config"/>
</cruisecontrol>
使用常量可以让您进行一次更改,并让它传播到配置文件中的每个任务。
请参阅docs
2)保存包含源代码管理项目的文件。项目文件作为SVN结帐的一部分进行更新。这有助于跟踪所做的更改,并让您回滚而不会有太多麻烦。
也许它已经到了CC.Net正在反对你而不是你的地步。我听说过有关其他CI服务器配置的简易性,例如Hudson,但它可能不适合您的构建环境。
答案 1 :(得分:1)
1 /根据需要拆分配置文件
例如,我有一个常量部分,每个项目都是一个包含,所以我可以独立更新每个项目相当并在项目中使用常量。
<强>的ccnet.config 强>
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<!-- Shared constants -->
<cb:define WorkingFolderBase="D:\dev\ContinuousIntegration\WC" />
<cb:define ArtifactFolderBase="D:\dev\ContinuousIntegration\Artifact" />
<cb:define ConfigFolder="projects" />
<cb:define SvnBasePath="http://myserver.com/svn" />
<cb:define SvnUsername="Myusername" />
<cb:define SvnPassword="MyPassword" />
<!-- MyProject1 -->
<cb:include href="projects/MyProject1.config"/>
<!-- MyProject2 -->
<cb:include href="projects/MyProject2.config"/>
</cruisecontrol>
<强> MyProject1.config 强>
<project name="MyProject1" queue="Q1" queuePriority="1">
<artifactDirectory>$(ArtifactFolderBase)\MyProject1</artifactDirectory>
<workingDirectory>$(WorkingFolderBase)\MyProject1</workingDirectory>
<!-- SVN implementation -->
<sourcecontrol type="svn" username="$(SvnUsername)" password="$(SvnPassword)">
<trunkUrl>$(SvnBasePath)/MyProject1/trunk/</trunkUrl>
<workingDirectory>$(WorkingFolderBase)\MyProject1</workingDirectory>
</sourcecontrol>
[...]
</project>
2 /在CC.NET上使用版本控制(我建议整个安装)或配置文件。
3 / 保持简单!让批处理文件执行所有操作(编译应用程序,编译测试,运行测试,获取覆盖率,静态分析器,生成报告......)。