msbuild - 维护持续集成的更好方法?

标签 msbuild continuous-integration cruisecontrol.net

我发现当我们添加新项目时,我总是在调整和调整我们的 CI 设置。虽然毫无疑问,对于很少更改的现有代码来说,好处是巨大的,但新项目或不稳定的项目似乎需要更多工作,因为我必须将每个项目配置为“集成”并维护不断增长的 CCNET.config文件。除了构建一个实用程序来管理添加和修改 CI 设置之外,是否有更好的策略?

最佳答案

我做了一些事情来尝试控制它:

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 checkout 的一部分进行更新。这有助于跟踪所做的更改并让您轻松回滚。

也许 CC.Net 已经到了与你作对而不是为你服务的地步。我听说过其他 CI 服务器易于配置的好消息,例如 Hudson ,但它可能不太适合您的构建环境。

关于msbuild - 维护持续集成的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182105/

相关文章:

cruisecontrol.net - 巡航控制 - 仪表板上的项目列表太长 - 我们可以有文件夹吗?

encryption - 使用 AES256 编译 System.Data.Sqlite

logging - 如何向 TFSBuild.proj 添加时间戳?

android - 由于未接受某些许可证,无法安装以下 Android SDK 包

matrix - Jenkins - 按顺序执行相同的模型,而不是并行执行

ios - Xcode - Bot 在状态 15 失败后太长时间没有输出

powershell - 为什么此 PowerShell &符号命令中的参数被错误解释?

visual-studio - 为什么我的 Visual Studio Cloud 项目会递归地将其包嵌套在我的 Web 角色构建输出中?

cruisecontrol.net - 使用 CCNET 从特定位置调用 .bat 文件

svn - 构建服务器和源代码控制存储库