存储库应包含什么?

时间:2008-12-24 06:29:13

标签: continuous-integration

我正在尝试设置持续集成流程。对于我的各种构建任务(编译,测试,文档等),我需要有工具来执行这些任务(csc,NUnit,NDoc等)。我的问题是这些工具是否也应该进入我的源代码控制库?

为什么我认为它们应该是因为我在一些在线文章中读到开发人员环境应该与构建服务器环境类似。为了满足这一要求,本文建议您将构建所需的所有内容放在存储库中,当您签出代码(或构建服务器检出代码)时,您就可以立即构建项目而无需先安装任何其他工具。但另一方面,如果我将这些工具与我的源代码放在存储库中,那么构建服务器必须在运行构建时安装它们。

安装这些工具可以吗?它不会不必要地增加每次构建的时间吗?

3 个答案:

答案 0 :(得分:2)

除非您自定义工具,否则可能没有理由将其源代码放入您的存储库中。但是,将配置文件放在存储库中有很好的理由。

答案 1 :(得分:2)

尝试检查源代码控制工具通常比值得更麻烦。相反,编写一个必须安装的软件需求列表,然后才能检出并构建源(在任何情况下,需要在此列表中的一件事就是源控制系统本身)。如果您依赖于源代码控制中的软件,则可能需要在某些路径中安装某些工具或以其他方式配置(注册表项会浮现在脑海中)。

我肯定检查编译器本身的源代码控制,我可能也不会检查NUnit或NDoc。只需事先安装这些,因为它们在项目的整个生命周期内都不会发生太大的变化。您的构建脚本可能需要检查是否已安装所需软件包的预期版本,然后才能继续构建。

答案 2 :(得分:1)

为每一个版本重新安装工具都是过度的,会让你失望。

然而,拥有一个专门用于持续集成的服务器会更好,以便您了解其状态;你确定没有人安装任何可能对构建结果产生影响的东西。

如果您希望能够在明年重新生成今天的版本,则需要首先重新创建您的环境。确保您能够重新安装工具(完全相同的版本),方法是将它们保存在服务器上(将新版本安装在不同的目录中),或者将整个软件包存储在配置管理工具中。

考虑如何创建另一个持续集成服务器,要么拥有其中两个,要么为第二个站点,或者在发生灾难后恢复。 记录如何设置持续集成服务器

真正需要进行版本控制,是构建脚本,可以访问正确版本的工具,特别是如果您选择安装多个版本的工具。