CI / CD 持续集成和部署 相关概念


注:部分资料转载自原文: https://blog.csdn.net/qq_32261399/article/details/76651376

什么是CI / CD?其意义何在?

在深入研究CI / CD自动化工具之前,我们首先需要了解其基本概念。正如我们所提到的,持续集成和持续部署通常与敏捷开发环境齐头并进。在这类环境中,团队希望在构建完成后立即将不同的代码段部署到生产环境中。

CI/CD持续集成/持续部署定义

持续集成

(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

持续部署

(Continuous deployment)是通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提高了人的效率,让 engineering productivity 最大化。

补:持续交付

(Continuous delivery,缩写为 CD),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。

与DevOps的关系

持续交付与DevOps的含义很相似,所以经常被混淆。但是它们是不同的两个概念。DevOps的范围更广,特别是软件交付过程所涉及的多个团队之间的合作(开发、运维、QA、管理部门等),并且将软件交付的过程自动化。另一方面,持续交付是种自动化交付的手段,关注点在于将不同的过程集中起来,并且更快、更频繁地执行这些过程。因此,DevOps可以是持续交付的产物,持续交付的结果直接汇入DevOps;

与持续部署的关系

有时候,持续交付也与持续部署混淆。持续部署意味着所有的变更都会被自动部署到生产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。

小结

使用CI / CD工具可自动完成构建,测试和部署新代码的过程。即使只更改了其中一行甚至是一个字符,团队成员都可以立即获得有关其代码生产准备情况的反馈。如此一来,每位团队成员都可以将他们的代码推送到生产体系当中,而构建,测试和部署的过程则自动完成,以便他们放心大胆地继续处理应用程序的下一部分。

了解到在我们的工作流程中使用CI模型实现自动化的重要意义,接下来就要看看哪款工具最符合我们的实际需求了。

主流的CI/CD工具

Jenkins

Jenkins是CI市场中最知名且最常见的名号之一。其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署。顺带一提:我们OverOps也在使用Jenkins以及自己开发的CLI工具。
它有什么作用?
与其它CI工具一样,Jenkins可以自动构建、测试及部署任务。该工具支持Windows、Mac OSX以及各类Unix系统,可以使用本机系统软件包以及Docker进行安装,也可以在安装了Java Runtime Environment(JRE)的任何机器上独立安装。

在实践方面,Jenkins允许团队中的任何成员将他们的代码推送到build当中,并立即获得其准备情况的反馈。当然,在大多数情况下,您的团队需要通过自定义要求对Jenkins进行一些调整和定制。

Jenkins的强大之处体现在其丰富的插件生态系统上。它提供超过1000款插件选项,可以集成几乎所有市场上可用的工具和服务。作为一款开源工具,您还可以选择自定义适合自身情况的解决方案——就像我们一样。然而,大家需要投入一定时间与精力来确保它适合您的实际需求。

价格:免费

Travis CI

Travis CI是CI / CD生态系统中比较常见的名号之一,最初设定为开源项目,并在多年扩展之后转为闭源项目。它专注于CI工作,通过自动化测试和警报系统提高构建过程的效能。
它有什么作用?
Travis-CI允许用户在部署代码时对代码进行快速测试。它支持代码大小变更,可识别构建与测试中发生的一切变更。检测到变更后,Travis CI可以提供有关变更是否成功的反馈。

开发人员可以使用Travis CI对运行时进行观察,并行运行多项测试,并将该工具与Slack、HipChat以及Email等集成,从而通过多种渠道获取问题或构建失败通知。

Travis CI支持容器构建,并支持Linux Ubuntu和OSX。您可以在不同的编程语言中使用它,例如Java,C#,Clojure,GO,Haskell,Swift,Perl等等。其具备一份相对有限的第三方集成列表,但由于关注重点在于CI而非CD,因此其可能解决不了您的实际问题。

价格:虽然Travis CI为开源项目且提供免费支持,但同时亦提供专有版本,价格从自助版本的69美元/月到高级版本的489美元/月不等。

一点补充:为确保始终备份最近的构建版本,Travis CI会在您运行新构建时将GitHub存储库克隆到新的虚拟环境中。

一句话总结:如果您的代码是开源的,并且您更关注构建中的持续集成部分,那么Travis CI值得一试。

Circle CI

Circle CI是一款基于云的工具,可自动执行集成和部署任务。它还强调在部署之前对代码中的每项变更进行测试,且使用多种方法——如单元测试、集成测试与功能测试等。该工具支持容器、OSX以及Linux环境,可以在私有云或您自己的数据中心内运行。
它有什么作用?
Circle CI能够与您当前的版本控制系统(如GitHub,Bitbucket等)集成,并在检测到变更时运行多种操作。其支持的变更方式包括提交,打开PR或任何其他代码更改。

每项代码更改都会根据您的初始配置和首选项创建build,并在洁净容器或虚拟机中运行测试。每个build都将接受多项操作处理,包括依赖性检查、测试与部署等。如果build通过测试,则可以通过AWS CodeDeploy、Google容器引擎、Heroku、SSH或您选择的任何其他方法进行部署。

存在问题的build和测试结果将通过Slack,HipChat,IRC或多种其他集成频道进行发送,团队可以借此快速了解变更结果。需要强调的是,Circle CI在配合各类不同语言时,可能要求进行一些调整与更改,因此建议大家首先查看所选语言的说明文档。

价格:对于Linux用户,第一套容器是免费的,每套额外容器每月50美元。对于构建1-5个build/天的团队,以及私人数据中心或云计算环境,OSX版本起价为39美元/月,年度合同的价格为每用户35美元/月。

一点补充:Circle CI可以自动清除GitHub上的冗余build。如果在同一分支上触发了较新的build,则该工具会识别并取消正在运行或排队的旧build——包括尚未完成的build。

一句话总结:如果你正在寻找一款GitHub友好型工具,要求它背后拥有广泛的社区,并可以在私有云或您自己的数据中心内运行,那么Circle CI绝对值得一试。

Codeship

Codeship对CI / CD有着不同的看法,并提供托管持续集成即服务方案。该工具最初是为Rails开发人员提供持续集成平台而构建的; 当时,他们需要在GitHub上托管自己的代码并将其部署到Heroku。由于极高的人气与旺盛的需求,该公司多年来一直不断扩展以支持其他技术方案。
它有什么作用?
Codeship有两种不同的产品,每种都有其优缺点。Codeship Basic允许通过Web UI和交钥匙部署连接代码库以设置CI / CD流程。它支持预配置CI环境,并允许多个不同的build在同一构建虚拟机上运行。

Codeship Pro使用Docker定义CI / CD环境,借此运行构建管道。它具有对构建环境的完全控制能力,允许您定义在其中运行的具体内容。Pro版本还提供预分支缓存,设置对哪些镜像以及工作流的哪个部分进行缓存,且支持并行部署。

整体而言,Codeship支持多种语言,例如Java、Go、Node.js、Python以及Ruby等。在部署方面,Basic版本支持AWS、Heroku、Azure和Kubernetes,而Pro还额外支持AWS ElasticBeanstalk、Google App Engine以及Digital Ocean。

价格:免费计划每月支持100个代码更新版本,且对项目、用户及团队数量不做限制。它还提供并发构建和并行测试管道。根据您需要的并发构建和并行测试管道数量,Basic与Pro版本的价格在49美元至79美元/月之间。

一点补充:Codeship提供一整套实用程序、脚本及Docker镜像集合,可以与该工具一起使用。该公司指出,其中一些还能够与其他类似的工具一同使用。此集合包括可自定义的外部服务部署脚本,用于安装默认情况下未包含在构建虚拟机上的特定软件版本的脚本等。

一句话总结:在同一名头之下提供2种不同的工具可能看起来有点奇怪,但这也使得开发人员可以选择更适合不同类型客户的各种元素。由于Basic和Pro皆为免费提供,因此对于您的CI需求来说,这应该是个不错的选择。

猜你喜欢

转载自blog.csdn.net/qq_30154571/article/details/85088928