大家好,我是十一。
本篇内容
本篇文章主要介绍持续化集成相关的术语,例如持续集成、持续交付、持续部署、持续测试。接下来我们进入正题!
持续集成-CI
持续集成,Continuous integration,CI是其简称。
百度百科中这样描述集成:集成(integration)就是一些孤立的事物或元素通过某种方式改变原有的分散状态集中在一起,产生联系,从而构成一个有机整体的过程。
那持续集成大概大家都想到了,就是频繁地(一天多次)集成;再详细点,我们是对软件做相关工作的,我们的程序底层是代码,因此我们要集成的对象就是代码,也就是说我们要频繁地集成我们的代码到主干。
这么做的目的是为了尽早发现问题。怎么验证有没有问题呢?每次集成都通过自动化的构建,包括:编译,发布,自动化测试来验证。
来看个例子,拿插花来说,插花的最终目的不就是把已有的一朵朵的花儿经过剪裁搭配出一瓶好看的艺术品嘛,那我们来对比两种插花方式:
第一种:我们根据自己的思路直接咔擦咔擦三下五除二的剪完,然后一股脑的插到瓶中。
第二种:我们根据自己思路剪完一朵,插到瓶中,观察后继续修剪第二多,然后再插入瓶中,以此类推,逐步完成。
大家认为这两种哪个方式更容易做成我们想要的花束呢?答案不言而喻当然是第二种,很容易发现问题,另外即使出了问题我们也很好采取措施,进行修正(第一种全都已经剪完了,再调整可能就是个大工程了)。
插花这个过程与我们集成代码最终成为一个可用的程序/产品的过程是不是很像?插花完成后我们通过观察就可以看出哪里有问题,那代码要怎么检查错误呢?通过单元测试和构建。
单元测试测试代码是否正确;而构建是测试代码是否可以组合且编译通过,最终成为一个可用的产品/应用。
总结下,持续集成就是,频繁地(一天多次)将个人研发的代码部分集成到主干,然后自动构建并进行单元测试的过程。目的是让产品可以快速迭代,同时还能保持高质量。
持续交付
持续支付,Continuous Delivery,CD是其简称。
让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布,这样的一个过程我们称之为持续交付。
持续交付意味着所有的变更都可以被部署到生产环境上,但是我们可以选择不部署。
总结来说,持续交付(CD)通常是指整个流程链,它自动监测源代码变更并通过构建、测试、打包和相关操作运行它们以生成可部署的版本。它的目标在于让软件的构建、测试与发布变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。
用下面这张图大家可以清晰的看到持续集成、持续部署和持续支付他们之间的关系。
持续测试
持续测试是指在代码通过持续构建后执行的自动化测试的实践,包括单元测试。这样严格执行的话其实对自动化覆盖率的要求很高,如果达不到,则需要补充些集成测试、功能测试、验收测试等相关测试,其目的是为了保障每次发布的版本可以在生产环境上使用;另外持续测试在持续集成快速的原则基础上,因此持续测试的第二个目标是快速发现问题并提醒开发团队。
持续部署
持续部署,Continuous Devlopment。
持续部署是指能够自动提供发布版本给最终用户,并且使其自动运行。根据用户的安装方式,可以是在云环境中自动部署、app 升级(如手机上的应用程序)、更新网站或只更新可用版本列表。要注意的是,持续部署并不意味着始终部署交付成果到生产环境上去,它实际上指,所有的交付成果都是“可部署的”。
发布成果是否被部署可以通过人工决策,或利用在完全部署之前“试用”发布的等方法来进行控制。那通常企业的做法是持续部署到测试环境或者预生产环境中去,等真正校验无误后再决定是否发布到生产环境。
好了,今天的内容到此结束,CI、CD你明白了吗?我们下期再见!Bye~。
下一篇:《持续化集成-02-jenkins》-介绍什么是jenkins,以及它的特点,使用场景。