文章目录
- 曾几何时,研发、测试、运维各自为战,如战国之群雄割据,各领风骚,直至CI/CD横空出世,纵横捭阖,四海归一,实现了“车同轨 书同文 行同伦”,将开发环境、测试环境、预发环境、生产环境聚于统一战线,上传下达,流水作业,一荣俱荣、一辱俱辱。
- 一、什么是CI/CD
- `1.CI(Continuous Integration,持续集成)`
- `2.CD(Continuous Delivery,持续交付)`
- 第一种解释
- 第二种解释(参考书籍《持续交付2.0——乔梁著》)
- `3.CD(Continuous Deployment,持续部署)`
- `4.CICD的几个特点`
- 二、为什么要用CI/CD
- `1.CI`
- `2.CD`
- `3.四个指标`
- 1.交付时间:
- 2.部署频率:
- 3.平均故障恢复耗时:
- 4.变更失败率:
- 三、怎么搭建一套CI/CD
- `PS:上面讲了这么多理论的东西,让人觉得有点模糊、遥远、不具体。下面是我根据CI/CD的基本理念,搭建的一套环境,里面的项目比较简单,在一些规划上也不太合理,主要的目的是能够对CI/CD有一个比较形象的了解。`
- 第1集,环境搭建
- 第2集,LNMP项目准备
- 第3集,WebHook触发mvn打包
- 第4集,SonarQube实现CodeReview
- [第5集,build image](https://blog.csdn.net/anqixiang/article/details/105003598)
- 第6集,部署到测试环境,Selenium自动测试
- 第7集,模拟版本更新,在测试环境验证
- 第8集,部署到生产环境
- 第9集,流水线部署到测试环境
曾几何时,研发、测试、运维各自为战,如战国之群雄割据,各领风骚,直至CI/CD横空出世,纵横捭阖,四海归一,实现了“车同轨 书同文 行同伦”,将开发环境、测试环境、预发环境、生产环境聚于统一战线,上传下达,流水作业,一荣俱荣、一辱俱辱。
一、什么是CI/CD
参考文章:
6 张图带你搞懂 CI/CD 流水线
1.CI(Continuous Integration,持续集成)
图片来源:https://blog.csdn.net/csdnnews/article/details/104624343
持续集成的重点是将各个开发人员的工作集合到一个代码仓库(如Gitlab)中。通常,每天会进行多次提交,主要目的是早发现,早更正,防患于未然,使团队更加紧密结合,更好地协作。
持续集成的本质是要自动化测试。如果研发部不具备自动化测试的能力,持续集成怎么做都是失败的。
持续集成里最重要的一点就是要推行单元测试、集成测试还有系统测试,单测是保证自己没问题,集成测试是保证跟上下游没问题,系统测试是保证整个系统没问题。
2.CD(Continuous Delivery,持续交付)
图片来源:https://blog.csdn.net/csdnnews/article/details/104624343
第一种解释
持续交付的目的是最小化部署或释放过程中固有的摩擦。频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
持续交付里很关键的一点就是我们要解决它的环境一致性、配置一致性。环境一致性可以用Docker解决,Docker 本身就是一种标准化的东西。另外一个问题,配置是不是一致性,是不是动静分离。
持续交付是一种能力。只有具备持续交付的能力,才能够实现持续部署。
第二种解释(参考书籍《持续交付2.0——乔梁著》)
持续交付被描述为“一种能力,即能以一种可持续的方式,将所有类型的变更安全且迅速地交给客户或发布上线。”
目标:高质量、低风险地快速发布软件价值
核心原则:
- 质量内建
- 小批量开发
- 尽可能将所有事情自动化,让计算机做重复的事情,而人来解决问题
- 持续不断且不遗余力