持续集成(Continuous intergration) ,简称CI:
是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。(简单理解为你们公司每天都收集一次你们公司开发部门全部成员的代码,然后放到CI Server上自动化给你们跑一遍,如果代码有问题就会原路打回来,这样做的目的就是为了能够尽早发现错误,从而能即时在最短的时间内定位你的错误并且改正,这样的过程我们就叫持续集成CI)。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成。
CI流程:
在 CI/CD 的语境中,每个步骤称为一个阶段,有序阶段的集合称为一个流程。下面是一个示例流程:
持续交付(Continuousdelivery),简称CD:
持续交付就是讲我们的应用发布出去的过程。这个过程可以确保我们尽可能快的实现交付。这就意味着除了自动化测试,我们还需要有自动化的发布流,以及通过一个按键就可以随时随地实现应用的部署上线。通过持续交付,您可以决定每天,每周,每两周发布一次,这完全可以根据自己的业务进行设置。但是,如果您真的希望体验持续交付的优势,就需要先进行小批量发布,尽快部署到生产线,以便在出现问题时方便进行故障排除。
持续部署( Continuousdeployment),简称CD:
如果我们想更加深入一步的话,就是持续部署了。通过这个方式,任何修改通过了所有已有的工作流就会直接和客户见面。没有人为干预(没有一键部署按钮),只有当一个修改在工作流中构建失败才能阻止它部署到产品线。持续部署是一个很优秀的方式,可以加速与客户的反馈循环,但是会给团队带来压力,因为不再有“发布日”了。开发人员可以专注于构建软件,他们看到他们的修改在他们完成工作后几分钟就上线了。基本上,当开发人员在主分支中合并一个提交时,这个分支将被构建、测试,如果一切顺利,则部署到生产环境中。
CI/CD开发流程:编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署
CI/CD工具:
1.Jenkins:
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins 的优点:
-
大量插件库
-
自托管,例如对工作空间的完全控制
-
容易调试运行,由于对工作空间的绝对控制
-
容易搭建节点部署代码
-
非常灵活多样的功能
-
支持不同的语言
-
跨平台
-
开源免费
Jenkins 的缺点:
-
插件集成复杂
-
对于比较小的项目开销比较大,因为你需要自己搭建
-
缺少对整个 pipeline 跟踪的分析
2.Gitlab CI/CD
GitLab 是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。GitLabCI/CD 是GitLab Continuous Integration(Gitlab持续集成)的简称。GitLab 自GitLab 8.0开始提供了持续集成的功能,且对所有项目默认开启。只要在项目仓库的根目录添加.gitlab-ci.yml文件,并且配置了Runner(运行器),那么每一次push或者合并请求(Merge Request)都会触发CI Pipeline。
GitLab CI/CD 的优点:
-
更好的 Docker 集成
-
运行程序扩展或收缩比较简单
-
阶段内的作业并行执行
-
有向无环图 pipeline 的机会
-
由于并发运行程序而非常易于扩展收缩
-
合并请求集成
-
容易添加作业
-
容易处理冲突问题
-
良好的安全和隐私政策
GitLab CI/CD 的缺点:
-
需要为每个作业定义构建并上传 / 下载
-
在实际合并发生之前测试合并状态是不可能的
-
还不支持细分阶段
3.Buddy
Buddy是一个很棒的CI/CD平台,旨在为Web开发人员减少入门级的DevOps障碍。它使用来自GitHub、Bitbucket和GitLab的代码来构建、测试和部署应用程序。有超过100种可用的操作可以以各种方式配置,管道的构建就像建造一座砖砌的房子。它利用Docker容器和预安装的编程语言和框架来与DevOps一起构建、监视和通知操作。
Buddy优点:
-
基于Docker的快速安装配置
-
快速作为一个测试环境来定制基于Docker的镜像
-
智能变化识别、现代缓存、并行和各种优化
-
支持SSH、Heroku等CLI命令
-
一流的服务和与Git的集成
-
网站的监控
Buddy缺点:
-
缺少适合新用户的文档
-
太贵了
4.CircleCI
CircleCI是基于云的CI/CD工具,可自动执行软件构建和交付过程。它提供快速的配置和维护,没有任何复杂性。由于它是基于云的CI/CD工具,因此消除了专用服务器的困扰,并降低了维护本地服务器的成本。此外,基于云的服务器是可扩展的,健壮的,并有助于更快地部署应用程序。
CircleCI优点:
-
快速启动
-
CircleCI有一个免费的企业项目计划
-
这很容易,也很快开始
-
轻量级,易读的YAML配置
-
您不需要任何专用服务器来运行CircleCI
CircleCI缺点:
-
CircleCI仅支持2个版本的Ubuntu免费(12.04和14.04)和MacOS作为付费部分
-
尽管CircleCI可以使用并运行所有语言,但tt仅支持“开箱即用”的以下编程语言:Go(Golang),Haskell,Java,PHP,Python,Ruby / Rails,Scala
-
如果您想进行自定义,可能会出现一些问题:您可能需要一些第三方软件来进行这些调整
-
此外,虽然作为基于云的系统是一方的优势,它也可以停止支持任何软件,你将无法阻止
工具详细对比:https://blog.csdn.net/dg313/article/details/126270138
标签:集成,CI,CircleCI,部署,GitLab,笔记,CD From: https://www.cnblogs.com/cq-cjw/p/16858126.html