我以前从未使用过 CI 工具,但从我所读到的内容来看,我不确定它是否会给不每天编写代码的独立开发人员带来任何好处。
首先 - CI 对任何项目都有什么好处?
第二 - 谁应该使用 CI?它是否使所有开发人员受益?
我以前从未使用过 CI 工具,但从我所读到的内容来看,我不确定它是否会给不每天编写代码的独立开发人员带来任何好处。
首先 - CI 对任何项目都有什么好处?
第二 - 谁应该使用 CI?它是否使所有开发人员受益?
CI 的基本概念是,您拥有一个系统,该系统可以在每次有人提交版本控制系统时构建代码并运行自动化测试。这些测试将包括单元和功能测试,甚至是行为驱动测试。
好处是您可以立即知道有人破坏了构建。
这意味着:
一个。他们提交了阻止编译的代码,这会搞砸任何人
乙。他们提交的代码破坏了一些测试,这意味着他们引入了需要修复的错误,或者需要更新测试以反映代码中的更改。
如果你是一个单独的开发者,如果你有在提交之前运行测试的好习惯,那么 CI 就没有那么有用了,这是你应该做的。话虽如此,您可能会养成让 CI 为您进行测试的坏习惯。
作为一个单独的程序员,它主要归结为纪律。使用 CI 是一项有用的技能,但您要避免养成任何不会转化为团队环境的坏习惯。
正如其他人所指出的,CI确实对独立开发人员具有优势。但是你必须问自己的问题是;是否值得开销?如果你和我一样,为一个项目设置一个 CI 系统可能需要一两个小时,因为我必须分配一台服务器,设置所有网络,并安装软件。请记住,CI 系统一次只会为您节省几秒钟的时间。对于独立开发人员来说,这些时间加起来可能不会超过进行 CI 设置所花费的时间。
但是,如果您以前从未设置过 CI 系统,我建议您这样做只是为了学习如何操作。它不会花这么长时间,它不值得学习经验。
CI 的好处在于能够及早发现签入破坏构建的时间。您还可以针对构建运行您的自动化测试套件,以及运行任何类型的工具来为您提供指标等。
显然,当您拥有一个提交者团队时,这是非常有价值的,并非所有人都努力检查重大更改。作为一个单独的开发者,它并不那么有价值。大概,你运行你的单元测试,甚至可能是集成测试。但是,我见过很多情况下开发人员忘记从集合中签入文件。
CI 构建也可以被认为是您的“发布”构建。环境应该是稳定的,并且不受您刚刚添加到机器中的任何开发小工具的影响。它应该允许您始终重现构建。如果您向项目添加新的依赖项,并且忘记设置发布构建环境以将其考虑在内,这可能会很有价值。
事实是,持续集成在团队中最有意义。单个开发人员也可以获得一些优势,你必须自己决定他们是否足以抵消你在设置 CI 系统上投入的时间。
如果您需要支持多个编译器,那么在您只在一个 IDE 中进行开发的同时,拥有一个 CI 构建系统来完成所有这些工作会很方便。我的代码在 x86 中通过 VS2008 使用 Vc6 构建,而 x64 在 VS2005 和 8 上构建,因此每个项目配置每个项目 7 次构建...拥有 CI 系统意味着我可以在一个 IDE 中开发并让 CI 系统证明所有我支持的编译器仍在构建。
同样,如果您正在构建由多个项目使用的库,那么 CI 将确保它们适用于所有项目,而不仅仅是您现在正在使用的项目......
我们使用 CI 系统进行发布构建(以及通常的自动“提交时”构建)。
能够单击一个按钮启动发布版本,该版本逐步完成所有流程以发布设置:
在敏捷环境中,您希望每 2-4 周交付一次工作软件,这绝对值得拥有,即使是在 1 人的团队中。
从某种意义上说,如果您忘记签入某些内容(因为构建将被破坏),CI 会使独立开发人员受益。但是,当没有其他开发人员时,它的集成价值会降低。