1.1 Devops概念

DevOps(英文Development和Operations的组合)是开发和运维一体一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

DevOps的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作,从而实现持续、快速、可靠地交付高质量的软件产品。

1.2 Devops实践

DevOps实践有三大核心部分:持续集成、持续交付和持续部署。下面一一说明。

1.2.1持续集成

持续集成,(Continuous Integration,简称CI),是软件开发周期的一种实践,把代码仓库(如Gitlab)、构建工具(如Jenkins)和测试工具(如SonarQube)集成在一起,频繁的将代码合并到主干然后自动进行构建和测试。通常每个开发成员的每次提交都会通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。简单来说持续集成就是一个监控版本控制系统中代码变化的工具,当发生变化是可以自动编译和测试以及执行后续自定义动作。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。

尽然CI的核心是持续构建,但在CI中还有一个重要的工具–版本控制,目前大多数开发选择的工具都是Git,Git的使用流程如下:

关于Git的使用笔者在后文会详细讲解。

1.2.2持续交付

持续交付(Continuous Delivery,简称CD),是在持续集成的环境基础上进行了扩展,在CI环节完成了软件构建和测试工作并形成了新的版本,那么接下来就要进行交付,而这里的交付并不是交付到生产环境,而是类生产环境,其目的是让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状态。

上图来源

1.2.3持续部署

持续部署(Continuous Deployment,简称CD),它是在持续交付的基础上打通最后一公里的工作,就是把手动部署到生产环境的方式升级为自动部署。

持续部署的前提是能自动化完成测试、构建、部署等步骤。它与持续交付的区别在于持续部署是采用自动化的方式,而持续交付是使用手动的方式,可以参考下图。

上图来源

持续集成、持续交付和持续部署其目的是减少代码改动到投入生产的所需时间,提早发现风险、减少QA的测试时长、减少运维的人工干预。整体上是一个提效的过程。当然它也不是万能的。

1.3 Devops工具体系

既然DevOps是一套工具体系,那么DevOps就会涉及到很多开发工具,下图是DevOps的工具链。

虽然DevOps工具链很庞大,但笔者主要以持续集成为核心讲解相关工具的使用,在后文笔者将会具体讲基于Git+Jenkins+Gitlab+Gerrit持续集成环境的开发与使用。

除了在本地搭建持续集成环境外,还可使用云DevOps,比如华为DevOps、阿里DevOps等。

1.4 Devops实例

1.当产品经理接收到需求之后将其录入项目软件(如Redmine)中,指定好开发人员。

2.开发人员接收到任务之后,在本地进行开发,开发完成后,将写好的代码弄成一个评审单上传到代码托管服务器(如Gerrit)中,并通知相关的评审人员进行评审。

3.在开发人员提交上去的那个刻则会触发持续集成工具(如Jenkins)提前创建的任务,任务触发后,持续集成工具先拉取代码库最新提交的代码,然后进行编译构建,扫描代码是否符合规范。代码符合之后,然后进行测试(在构建的时候会先进行单元测试),然后把构建好的包,在测试环境上进行部署,然后拉取自动测试脚本进行测试,测试没有问题之后。持续集成工具会对本次的评审单进行打分。通过了就打2分,不过打-2分。这样就避免了浪费大家的时间,在打分通过了的情况下,评审人员才会去评审。

4.评审人员到代码托管服务器上进行评审通知后,会去评审,如果评审不合格,直接拒绝,开发人员重新进行开发提交。在提交然后再重复上一步骤。如果评审通过,进行代码合入,然后再次触发构建任务,构建到测试版本之后,然后发布到制品库中,然后通知测试人员可以进行测试了。

5.测试人员收到测试任务之后,从制品库中拉取测试包进行部署测试,然后再用自动化脚本进行测试,对于个别场景可以进行手工测试,如果有bug,测试人员则会通知开发人员,这个时候流程又从第一步开始,直到这个bug测试通过了。

6.如果测试人员测试通过了,然后又可以出发一次构建任务。将最新的代码构建成release版本发到制品库中或者是进行自动部署。而且现在有灰度发布,可以一点一点切流程到新的版本上,看一下运行情况,如果不行直接回退。



欢迎访问我的网站

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书
BruceOu的知乎


欢迎订阅我的微信公众号

《持续集成实践指南》第1章 DevOps实践简介相关推荐

  1. 持续集成在Hexo自动化部署上的实践

      曾经听到过这样一句话,"不要用战术上的勤奋掩盖战略上的懒惰",所以战术和战略更像是抽象类和具体类,而面向对象设计实际上是现实等级制度的一种映射.因此我们注意到,决策者通常关注的 ...

  2. Jekins持续集成在ERP研发中的应用实践

    源宝导读:"持续集成"是敏捷最佳实践中,保证高质量交付的关键环节之一.本文将介绍明源云ERP系统在研发过程中,应用Jekins平台完成持续集成自动构建的实践. 一.认识持续集成 持 ...

  3. GitLab持续集成在商用项目中的应用实践

    两年前在开始一个新的商业项目时我花了两个星期时间在项目开发流程中应用上了持续集成,随后一年又随着项目的发展和商用化做了很多改进.所以掌握了GitLab 持续集成这套方案在商业软件中完整的落地实践经验. ...

  4. 持续集成与持续部署实践_持续集成和部署的3个最佳实践

    持续集成与持续部署实践 本文涵盖了三个关键主题:自动化CI / CD配置,将Git存储库用于常见的CI / CD工件以及对Jenkins管道进行参数设置. 术语 首先是第一件事: 让我们定义一些术语. ...

  5. lua游戏开发实践指南光盘_Godot游戏开发实践之三:容易被忽视的Resource

    一.前言 首先,特大喜讯,奔走相告, Godot 爱好者们又有新的窝了--我们国人自建的 Godot 论坛:Godot中文社区已经正式开放,这里有一手的开发资源,最新的科技动向,开发上有啥问题可以随时 ...

  6. lua游戏开发实践指南光盘_Godot游戏开发实践之一:用High Level Multiplayer API制作多人游戏(上)

    一.前言 距离上一次发文已经稳稳超过一年了,去年一直在做 #¥@#*!%--%#&-%&^# 然后待在家里了!偶尔写写 BUG ,一直默默关注着 Godot ,这不已经 3.2.2 版 ...

  7. CI Weekly #21 | iOS 持续集成快速入门指南

    搭建 iOS 持续集成环境要多久?每个 iOSer 都有不同的答案.这次我们整理了 flow.ci 的 iOS 持续集成的相关文档和最佳实践,希望帮你更快地完成构建.更新文档见: flow.ci iO ...

  8. 敏捷开发,持续集成/交付/部署, DevOps总结

    文章目录 敏捷开发入门教程 一.迭代开发 二.增量开发 三.敏捷开发的好处 3.1 早期交付 3.2 降低风险 四.如何进行每一次迭代 五.敏捷开发的价值观 六.十二条原则 七.参考链接 持续集成/交 ...

  9. 为什么持续集成和部署在开发中非常重要?

    让重复的事情自动化. 如果运用得当,CI/CD 将会是一个很好的工具,帮助团队提效.你要相信,肯定没有人愿意花几个小时时间,去"盯"部署脚本执行的结果,还要手动测试来确认系统是否能 ...

最新文章

  1. 如何用Pygame写游戏(三)
  2. 将字符串或数字倒序输出
  3. Java调用MQ队列
  4. Atitit 中间件之道 attilax著 1. 第1章 中间件产生背景及分布式计算环境 2 2. 中间件分类 3 2.1. 商业中间件:weblogic,was,conherence 开源中间
  5. 星环大数据平台 TDH inceptor 问题排查
  6. VMware Workstation 12 安装大于4GB的GHOST 64位win7系统
  7. MATLAB计算干旱指标:SPI、SRI、SWAP、DWAAI、EDI等
  8. 锐浪报表开发Web版
  9. python二元一次方程组用鸡兔同笼的思路来写编程_二元一次方程组应用 —鸡兔同笼...
  10. 以赛促产 以赛引才 |第六届世界智能大会·中国华录杯数据湖算法大赛正式启动
  11. Fvuln-自动化web漏洞检测工具
  12. bzoj3039 玉蟾宫【单调栈】
  13. nexus上传jar总是读条而上传不成功的问题
  14. 最新爆料!RK3588 适配 OpenHarmony 的新进展
  15. 洛谷P1309 瑞士轮【归并排序】
  16. YOLOv1论文详解【算法原理、置信度、IOU、损失函数等】
  17. 中国大学MOOC政府会计实务题库及答案
  18. html实现简单分享功能
  19. opencv中Mat究竟是什么?
  20. 计算机sci有哪些AJCHE,最新SCI目录(大类加小类,齐全).xls

热门文章

  1. ios设置音乐audio自动播放
  2. 小程序源码:游戏助手王者战力查询扫码登录多功能微信小程序
  3. 干货技巧|如何用3DsMax制作笔记本电脑
  4. 爱好-C语言秘钥产生器
  5. 人民币大小写转换 java 实现
  6. Android Animations动画使用详解
  7. c语言中最大公约数的编程,C语言中最大公约数求法
  8. flash火焰燃烧的文字效果
  9. iOS连wifi(修改密码后的wifi)遇到的坑,纯转载
  10. C++宏定义中的特殊符号