我之前从未使用过CI工具,但从我读过的内容来看,我不确定这会给每天不编写代码的独立开发人员带来什么好处.
首先 - CI为任何项目带来了哪些好处?
第二 - 谁应该使用CI?它对所有开发人员有益吗?
CI的基本概念是,每当有人提交版本控制系统时,您就拥有一个构建代码并运行自动化测试的系统.这些测试包括单元和功能测试,甚至行为驱动测试.
好处是你知道 - 当有人破坏了构建时.这意味着要么A)他们提交了阻止编译的代码,这会阻止任何人进行"更新",或者B)他们提交了破坏某些测试的代码,这或者意味着他们引入了需要修复的bug,或者需要更新测试以反映代码中的更改.
如果您是独立开发人员,如果您习惯在提交之前运行测试,那么CI就不那么有用了,这就是您应该做的事情.话虽这么说,你可能会养成让CI为你做测试的坏习惯.
作为一名独奏程序员,它主要归结为纪律.使用CI是一项非常有用的技能,但是您希望避免产生任何不能转化为团队环境的坏习惯.
正如其他人所说,CI 确实对独立开发者有优势.但你要问自己的问题是; 是否值得开销?如果您像我一样,可能需要一两个小时才能为项目设置CI系统,因为我必须分配服务器,设置所有网络并安装软件.请记住,CI系统一次只能节省几秒钟.对于独立开发人员,这些时间不可能超过完成CI设置所花费的时间.
但是,如果您以前从未设置过CI系统,我建议您只是为了学习如何做到这一点.它不需要很长时间,不值得学习经验.
CI的好处在于能够在办理登机手续时破坏建筑物时尽早发现.您还可以针对构建运行自动化测试套件,以及运行任何类型的工具来为您提供指标等.
显然,当你拥有一支通勤者团队时,这是非常有价值的,并非所有人都勤奋地检查是否有变化.作为一名独立开发者,它并没有那么有价值.据推测,您可以运行单元测试,甚至可能进行集成测试.但是,我发现很多情况下开发人员忘记签出一个文件.
CI构建也可以被视为您的"发布"构建.环境应该是稳定的,并且不受您刚添加到计算机中的任何开发Gizmo的影响.它应该允许您始终重现构建.如果向项目添加新的依赖项,并且忘记设置发布构建环境以将其考虑在内,这可能很有用.
事实是,持续整合在团队中最有意义.单个开发人员也可以获得一些优势,您必须自己决定是否足以应对投入设置CI系统的时间.
如果您忘记签入某些所需文件,则存储库中包含损坏的版本,即使它适用于您的计算机.CI会检测到这种情况.
如果CI服务器在不同的计算机上运行,则它可以指示对构建环境的依赖性.意味着,构建和所有测试都可以在您的开发箱上运行,但在另一台机器上,某些依赖关系不会被实现,并且构建会中断.
每日构建可以表明,您的旧软件不能与OS /编译器/库的最新升级一起使用...
如果您的CI系统具有构建工件存档,则可以轻松获得旧版软件的分发.
有些CI有一个很好的界面来显示有关构建的指标,有自动生成的文档和类似的东西的链接.
如果您需要支持多个编译器,那么在您只在一个IDE中开发时,使用CI构建系统来完成所有这些操作非常方便.我的代码在x86中通过VS2008构建,在VS2005和8上构建x64,因此每个项目配置为每个项目构建7个...拥有CI系统意味着我可以在一个IDE中开发并让CI系统证明所有我支持的编译器仍在构建.
同样,如果您正在构建由多个项目使用的库,那么CI将确保它们可以与所有项目一起使用,而不仅仅是您正在使用的项目...
我们使用CI系统来执行Release版本(以及通常的自动"on-commit"构建).
能够单击启动Release构建的按钮,该构建逐步执行所有过程以释放设置:
快(我可以直接用其他东西,它在一台单独的机器上运行,所以它不会减慢我的速度);
重复(它不会忘记任何事情,包括将设置复制到发布文件夹并通知每个需要知道的人)
可靠(没有错误,不像人类!).
在敏捷环境中,您希望每2-4周交付一次工作软件,这绝对值得拥有,即使是在1人团队中也是如此.