你遇到过“集成地狱”吗()
自动化部署 CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。
作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)。
本 Chat 将从流程以及原理入手到实战演练,技术栈/关键词:
- Gitlab-CI
- Docker
- Maven
- Google Jib
- Nexus
- 微服务架构工程师
- Java 开发人员
▼
文章图片
持续集成 Continuous Integration(CI)和持续交付 Continuous Delivery(CD)。在当前 DevOps 的趋势下,可以说具有支柱性地位。
软件交付管道以快速、自动化和可重复的方式从源代码生成发布版本,就类似于工厂里的装配线以快速、自动化、可重复的方式从原材料生产出消费品,完成这项工作的总体设计我们就称之为持续交付,启动装配线的过程我们称之为持续集成。
在介绍 CI/CD 流水线的工作原理之前,我们先了解一下什么是 DevOps。
什么是 DevOps?
DevOps 是一种软件开发方法。它将持续开发、持续测试、持续集成、持续部署和持续监控贯穿于软件开发的整个生命周期。
当前几乎所有的顶尖公司均采用了该方法,用以提高软件开发质量,并缩短软件开发生命周期。从而以达到每个公司对软件产品的期望,交付出客户最满意的产品。
便于大家理解记忆,我画了张 DevOps 生命周期图。
文章图片
什么是 CI/CD ?
持续集成(CI)是在源代码变更后自动检测、拉取、构建的过程。CD 代表持续交付(Continuous Delivery)和持续部署(Continuous Deployment),也可以将它们看作是类似于软件开发生命周期的过程。
现在我们来看一下它是如何工作的。
文章图片
如上图所示,该流水线展示了一个软件在其最终交付给客户或者投入上线之前,它在其生命周期内各个阶段中的移动过程。
接下来我们具体看一下该 CI/CD 流水线。
假如我们要构建一款 Web 应用程序,并将它部署在一个现场 Web 服务器上。同时我们有一组开发人员,他们主要负责编写代码,并将代码构建为 Web 应用程序。假设现在开发团队已经将代码提交到版本控制系统(如 Git、SVN)中了。
构建阶段
接下来,代码将会经历构建阶段,这也是 CI/CD 流水线的第一阶段。在此之前,开发者已经将他们的代码加上合适的标签,并提交到版本控制系统中了。
文章图片
假如我们采用的是 Java 语言,那么还需要先进行代码编译。因此,代码在通过版本控制阶段之后,会先在构建阶段予以编译。该阶段会从代码库的各个分支中获取到所有的功能代码,合并后最终通过一个编译器来编译它们。这整个过程都被称为“构建阶段”。
测试阶段
文章图片
构建阶段结束后,将会继续进入到代码的“测试阶段”。在这个阶段中,我们会进行各种各样的测试,单元测试就是其中之一。在该阶段中,我们会测试代码中多个组件间的关系或者单个组件的功能,同时也会进行软件的可用性测试。
部署阶段
文章图片
测试阶段完成后,就要进入“部署阶段”了。在该阶段,代码将会被部署到准生产环境服务器(Staging Server)或者测试环境服务器(Test Server)中。同时在该阶段中,我们既可以查看程序代码,也可以在模拟器中运行该应用程序。
自动测试阶段
文章图片
只要我们的代码部署成功,我们就可以运行另一组可用性测试了。该阶段结束后,如果所有的测试都通过了,那么就可以将其部署到生产环境中了。
部署到生产环境
文章图片
点击阅读原文,查看完整全文!
推荐阅读
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- 艾略特的交易法则“遵循自然规律”
- 闲杂“细雨”
- “成长”读书社群招募
- 上班后阅读开始变成一件奢侈的事
- “精神病患者”的角度问题
- 说的真好
- 2021-02-10(找不回的“年味”……)
- “不完美,才美”01(190410)
- 火锅