CI/CD的常用工具及原理

本篇文章开始,将介绍CI/CD相关工具的搭建过程及CI/CD流水线的实现过程

CI/CD:持续集成/持续发布(continuous integration/continuous deployment)

持续集成:是一种开发实践,要求开发人员每天多次将代码集成到共享存储库中。” (来源:ThoughtWorks)

持续交付:是一种软件工程方法,团队可以在短时间内将软件部署到生产环境,确保在任何时候可靠地发布软件,并且在发布软件时可以手动进行。” (来源:维基百科)

CI/CD主要运用了jenkins进行对后端的开发代码的拉取,经过自动编译,打包,测试后,自动发布到tomcat服务器上,实现自动化的产品上线。

持续集成注重将各个开发者的工作集合到一个代码仓库中,通常每天会进行几次, 主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。

持续交付的目的是最小化部署或发布过程中团队固有的摩擦, 它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。

持续部署是一种更高程度的自动化,无论何时代码有较大改动, 都会自动进行构建/部署。

持续集成(CI)

通过持续集成,开发人员能够频繁地将其代码集成到公共代码仓库的主分支中。 开发人员能够在任何时候多次向仓库提交作品,而不是独立地开发每个功能模块并在开发周期结束时一一提交。

这里的一个重要思想就是让开发人员更快更、频繁地做到这一点,从而降低集成的开销。 实际情况中,开发人员在集成时经常会发现新代码和已有代码存在冲突。 如果集成较早并更加频繁,那么冲突将更容易解决且执行成本更低。

当然,这里也有一些权衡,这个流程不提供额外的质量保障。 事实上,许多组织发现这样的集成方式开销更大,因为它们依赖人工确保新代码不会引起新的 bug 或者破坏现有代码。 为了减少集成期间的摩擦,持续集成依赖于测试套件和自动化测试。

CD 集中依赖于部署流水线,团队通过流水线自动化测试和部署过程。此流水线是一个自动化系统, 可以针对构建执行一组渐进的测试套件。CD 具有高度的自动化,并且在一些云计算环境中也易于配置。

持续部署(CD)

持续部署扩展了持续交付,以便软件构建在通过所有测试时自动部署。在这样的流程中, 不需要人为决定何时及如何投入生产环境。CI/CD 系统的最后一步将在构建后的组件/包退出流水线时自动部署。 此类自动部署可以配置为快速向客户分发组件、功能模块或修复补丁,并准确说明当前提供的内容。

采用持续部署的组织可以将新功能快速传递给用户,得到用户对于新版本的快速反馈,并且可以迅速处理任何明显的缺陷。 用户对无用或者误解需求的功能的快速反馈有助于团队规划投入,避免将精力集中于不容易产生回报的地方。

优点(参考为什么需要CI/CD

软件交付更快

借助自动化,更快地交付产品,并且可以获得最终用户的反馈,因为需要完成的手动任务较少,可以更频繁地发布较小的变更到生产环境。

可见度提高

使用CI/CD,测试和部署过程是透明的。

任何问题都几乎可以立即看到,并且可以快速找到原因,从而减少了之前在查明问题原因时迫不得已的猜测。

由于漏洞易于跟踪,因此人们要承担责任。这并不意味着是时候进行追责了,这意味着能够快速找到解决该问题的最佳人选。

最终,增加了系统正常运行时间。

错误减少

现代软件功能,项目和应用程序很复杂,错误也越来越复杂。

持续集成消除了其中的一些复杂性,减少了问题所在的领域,并增加了成功的可能性。自动化对于减少人为错误是必不可少的。如果计算机可以执行任务,请让计算机执行任务。

持续集成的两个主要原则是,频繁运行代码以及自动执行软件交付生命周期的构建和测试部分。每天多次运行代码集成意味着可以更快地发现错误,然后可以更快地纠正错误,因为每次要做的事很少。

开发人员的手动任务更少,这意味着更少的人为错误机会。从而,运维部门会收到高质量的代码,QA需要解决的问题较少。客户服务也不会收到那么多恼人的客户投诉邮件或投诉电话。每个人的工作都得到改善。

资源释放

如果将可重复和可预测的任务移交给自动化,则可以为开发人员腾出时间来做他们喜欢的事情:开发。将繁琐,重复的任务留给计算机,让你的开发人员完成更有意义,更有创意的高级工作!

使用CI/CD,可以进一步分配相同数量的资源。因此,在保持原始业务约束的同时,还可以完成更多工作。

客户更满意

更快,更频繁的发布和更少的错误导致开发人员与其他业务部门之间的信任,按时完成任务,获得可靠的结果以及使最终用户更加满意。

CI/CD是双赢的。

随着 DevOps 的发展,新的用来实现 CI/CD 流水线的自动化工具也在不断涌现。像 GitHub 这样的代码仓库和 Jira 这样的 bug 跟踪工具随着 SaaS 这种交付方式变得更受欢迎, 许多工具都可以在现代开发人员运行应用程序的云环境中运行,例如 GCP 和 AWS。
最受欢迎的自动化工具是 Jenkins(以前的 Hudson), 这是一个由数百名贡献者和商业公司 Cloudbees 支持的开源项目。除了开源项目之外,还有一些更现代化的商业产品例如 CircleCI,Codeship 和 Shippable。 

持续集成:Jenkins,Travis,TeamCity和Bamboo
(一旦部署了现代化的 CI/CD 流水线,您可能会意识到开发人员工作流程中的一些工具和流程也需要进行现代化改造。 测试是一个要着重关注的领域,如果您的部署频率是每天或者一天多次,您的每次测试可能需要数小时甚至一晚上才能完成。)
代码分析器/查看工具 –这些工具可查找代码格式和质量以及测试覆盖范围中的错误。SonarQube是该领域的流行工具。
有一些CI工具将帮助你更快地完成持续集成工作:
CircleCI:你可以免费开始使用CircleCI。这在GitHub项目中很流行,并且具有自托管和托管解决方案。
Jenkins:一个开源平台,可为你提供丰富的功能。
Pipelines:由Microsoft启动,此工具最多可供5位用户免费使用。
Gitlab CI:一个GitLab工具,也可以通过API与其他几个工具结合使用。它可以从Gitlab免费获得。

配置管理 –配置管理工具和数据库,通常会存储有关硬件和软件项目信息,并提供脚本或模板来自动化常见的任务。
这个领域常见的工具有: Chef,Puppet,和 Salt。

部署工具 –这些工具有助于软件的部署。许多CI工具也是CD工具,可帮助部署软件。
传统上,在Ruby中,Capistrano工具已被广泛使用。在Java中,Maven被许多人使用。所有编排工具也都支持这种部署。

编排工具 –这些工具可配置,协调和管理计算机系统和软件。它们通常将自动化”和“工作流”作为其服务的一部分。
Kubernetes是一种非常流行的编排工具,专注于容器。
Terraform也是一种非常流行的编排工具,它的应用范围更加广泛,包括云编排。
此外,每个云提供商都拥有自己的一套工具(CloudFormation,GCP Deployment Manager和ARM)。
监视工具 –这些工具允许监视硬件和软件。通过监视程序和日志文件等,以确保系统的运行状况。
Nagios和Prometheus是一种流行的监视工具。
持续交付工具
Azure Pipelines
Jenkins
Gitlab CI
GoCD
Spinnaker

工具总结
CircleCI
Jenkins(On-Premise)
Gitlab CI
GoCD
Spinnaker
TeamCity (On-Premise)
Travis CI
AppVeyor
Azure Pipelines

下面具体介绍几个CI/CD相关工具:

CircleCI

Gitlab CI

GoCD

Jenkins

Spinnaker

Travis CI

CircleCI与Jenkins对比

整体对比

后续我们将通过搭建相关环境,逐步实现CI/CD的流水线。

CI/CD的常用工具及原理相关推荐

  1. 常用工具(原理分析)

    kaldi常用工具(原理分析) 工具介绍使用:http://blog.csdn.net/zjm750617105/article/details/52540823 , 如果只想看怎么用那看前边那个li ...

  2. kaldi常用工具(原理分析)

    工具介绍使用:http://blog.csdn.net/zjm750617105/article/details/52540823 , 如果只想看怎么用那看前边那个link就足够了,不需要再往下读了, ...

  3. 开发人员必知的5个CI/CD工具

    一旦你选择了最好的CI/CD工具,你将继续你的DevOps生命周期.如果操作得当,它将能够提高产品质量并鼓励你的团队充满自信地进行发布游戏. 软件工程的最新规范是"以更快的速度同时保证产品质 ...

  4. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  5. qa/qc_专业QA如何实施可靠的CI / CD管道?

    qa/qc 过时的传统软件开发方法并不能接管不断升级的市场趋势,并且这些方法缺乏解决方案,无法解决引入" 持续集成(CI)和持续交付(CD) "的快速软件发布需求的增长. 除了CI ...

  6. 专业QA如何实施可靠的CI / CD管道?

    过时的传统软件开发方法并不能接管不断升级的市场趋势,并且这些方法缺乏解决方案,这些解决方案无法满足引入" 持续集成(CI)和持续交付(CD) "的快速软件发布的日益增长的需求. 除 ...

  7. CI/CD一般流程图

    CI/CD的流水线一般由按照一定的逻辑组织工具.下面是一个逻辑图串联工具形成的一个典型的CI/CD流程. 工具: Bitbucket :代码托管工具 Jenkins :编译工具 Docker :打包工 ...

  8. 带你深入了解 GitLab CI/CD 原理及流程

    作者:狂乱的贵公子 cnblogs.com/cjsblog/p/12256843.html GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发: Continuo ...

  9. 谁才是世界上最好的 CI/CD 工具?

    作者 | 韩骏 责编 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 谁才是世界上最好的 CI/CD 工具?TeamCity.Jenkins.Travis CI.AppVeyor 或是 Az ...

最新文章

  1. 【干货】写给产品经理和设计师的用户体验知识
  2. VTK:Texture之ProjectedTexture
  3. OpenCV delaunay三角剖分和voronoi镶嵌的实例(附完整代码)
  4. 调用微信支付接口总结
  5. 官方暗示与TÜV莱茵合作? MIUI12真的不远了
  6. GitHub 公布了托管平台与美国贸易管制的相关细节
  7. 爬虫教程 python3_Python3网络爬虫(四): 登录
  8. ES(Elasticsearch)解除索引只读限制
  9. 两个矩阵是否相交的算法_个性化推荐召回算法——Personal Rank
  10. DDA算法、中点Bresenam算法,圆或椭圆的绘制
  11. 带宽,传输速率,吞吐量三者之间的关系与区别
  12. js:常用的3种弹出提示框(alert、confirm、prompt)
  13. Python 调用谷歌翻译(2021年9月测试可用)
  14. 如何在WordPress中添加免费实时聊天(简便方法)
  15. 一个矩形微带贴片天线的调试
  16. Linux就该这么学第十三节课学习心得
  17. 标签云制作工具wordart的注册登录页面介绍
  18. 在线考试视频学习平台
  19. Python基础-day02
  20. php更改导航栏图标,wordpress导航菜单前添加矢量小图标

热门文章

  1. 微信小程序中Map地图组件的使用
  2. python fastapi 获取所有header信息_Python爬虫实战五之模拟登录淘宝并获取所有订单...
  3. 如何用计算机撩手机号,宅男福音:巧用iphone计算机,撩走MM手机号
  4. 数据挖掘情感分析python_数据挖掘实战:Twitter情感分析
  5. 计算机基础调查问卷,计算机基础调查问卷.doc
  6. IT项目管理中风险控制的4个重要步骤
  7. 【NLP】用python实现文本转语音处理
  8. 国外LEAD联盟win系统去哪里下载
  9. Scratch(四十一):升级版垃圾分类
  10. 一套仿阿里完整版Spring Boot电商项目,前后端分离+权限管理系统