介绍*:关于持续集成(CI)和持续交付(CD)的资源和信息有很多,包括定义、最佳实践和操作指南。此外,每天都有大量的 CI/CD
工具上市。但是为什么我们需要 CI 和 CD?
让我们从一些基本信息开始介绍。
什么是持续集成和持续交付?
有很多定义在流传,但这里的两个定义抓住了这两个过程的本质:
“持续集成是一种开发实践,要求开发人员每天多次将代码集成到共享存储库中。”(来源:ThoughtWorks)
“持续交付是一种软件工程方法,团队可以在短时间内生产软件,确保可以在任何时候可靠地发布软件,并且在可以手动发布软件。”(来源:维基百科)
这听起来不错。但是你可能会问,“这有什么大不了的?” 要回答这个问题,我们需要想象一个没有CI/CD
的世界,看看为什么这么多人跳上CI/CD
的列车。
假如没有CI/CD
1、交付缓慢
手动任务对于完成任务的人来说是乏味且令人沮丧的。这些任务减慢了交付过程,并最终阻碍了创新。如果竞争对手使用自动化而你没有使用自动化,那么竞争对手就赢了。等待部署的代码是不赚钱的。
2、缺乏可见性
“错误发生在哪里?是什么原因造成的?每个环境中部署了什么?我们可以把程序回退吗?”
如果没有CI/CD
这些就是你每天都会问并且试图回答的问题。
3、错误和用户不满
没有自动化就意味着用户会出错。每个手动任务都为错误打开了大门。这些错误经常发生并且难以解决。
另外,由于不经常合并大量代码,因此在漫长的开发周期结束时会发现错误,修复这些错误可能更具挑战性,或者对难于排除故障的代码库中的其他部分产生影响。
错误会导致软件交付过程中涉及的个人和部门之间关系紧张。运维部门将糟糕的代码归咎于开发人员。开发人员对所有手动任务感到沮丧,并指责QA没能捕获错误。当客服人员必须解决最终用户的不满时,他们会责怪参与过程的每个人。最终,这个组织会缺乏协作和工作友谊。
CI/CD 优点
1、交付更快
当今的商业世界需要以往任何时候都需要更快的创新。借助自动化,你可以更快地交付产品,并获得最终用户的反馈,因为需要完成的手动任务更少,你可以更频繁地发布较小的更改来促进生产。CI/CD
可以使你更好地参与市场竞争。
2、增加可见性
使用CI/CD
,测试和部署过程是透明的。任何问题都几乎可以立即看到,并且可以迅速找到原因,从而减少了常规方式在确定原因时所涉及的猜测。
由于漏洞易于跟踪,因此人们要负起各自的责任。这并不意味着是时候进行互相指责了,而是说负责这部分代码的人是解决问题的最佳人选。最终,正常运行的时间增加了。
3、消除错误
发生错误是很难避免的。现代软件功能,项目和应用程序很复杂。一个版本有很多地方可能出错。毕竟,每个开发人员都是人,都可能犯错。持续集成消除了其中的一些复杂性,减少了问题所在的领域,并增加了成功的可能性。自动化对于减少人为错误是必不可少的。如果计算机可以执行任务,请让计算机执行该任务。
持续集成的两个主要原则是频繁运行代码以及自动执行软件交付生命周期的构建和测试部分。每天多次运行代码集成意味着可以更快地发现错误,因为需要做的挖掘工作更少就可以更快地纠正错误。
开发人员的手工任务更少,这意味着出现人为错误的机会更少。运维会收到高质量的代码。QA需要解决的问题较少。客户服务不会收到那么多恼人的电子邮件和电话。每个人的工作都得到改善。
4、释放资源
如果将可重复和可预测的任务移交给自动化,则可以为开发人员腾出时间,这样他们可以做自己喜欢的事情:开发。将平凡的重复性任务留给计算机(它们不介意)),让你的开发人员做更有成就感和回报的高级工作!
使用CI/CD
,同样数量的资源可以进一步分配。因此,在保持原始业务约束的同时,还可以完成更多工作。
5、最终用户更满意
更快,更频繁的发布和更少的错误会促使开发人员与其他业务部门之间建立起信任,按时完成任务,获得可靠的结果,可以使最终用户更加满意。CI/CD
是双赢的。
如果没有CI/CD
,交付缓慢,缺乏可见性,错误频繁发生,最终用户会感到不满意。但是,有了CI/CD
和自动化,更频繁的集成,更好的可见性,更友好的协作和更容易定位错误的解决方案,所有这些问题就消除了。难怪越来越多的企业正在朝着敏捷方法论和自动化流程迈进!