1 - CI与CD的联系与区别

持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)的过程,其实就是一个软件开发优化的过程。

  • 统一流程:自动化地触发编译、集成、测试、交付和部署
  • 保证集成的有序性、可靠性,减少版本发布的不合规性,避免手工打包、测试不充分等
  • 版本可控,问题可追溯:可以回溯到具体版本

三者有着不同的目的

  • 持续集成的目的是尽早发现问题
  • 持续交付的目的是实现快速发布
  • 持续部署的目的是在生产环境中进行发布,虽然对发布时间没有明确要求,但要考虑随时发布的情况,确保服务在发布期间不会中断

而且,三者有着不同的软件自动化交付周期和作用:

  • 持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
  • 持续交付建立在高水平自动化持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的类生产环境中,进行更多的自动化测试。
  • 持续部署是指当交付的代码通过评审之后,自动部署到生产环境中,可以相对独立地部署新的功能,并能快速地收集真实用户的反馈。

由此可见,各种持续方法并不是完全独立地工作,只是对持续开发服务或持续改善服务所需的步骤进行了区分。

2 - 为什么要构建CI&CD平台?

利用开源工具和技术可以搭建一个相对完善的CI&CD体系,能够应对大规模软件开发所面对的交付问题。

  • 更新缓慢:代码改动需要很长才能部署
  • 包管理混乱:依赖复杂、版本混乱
  • 安全性低:软件包容易被篡改
  • 资源利用不充分:人工分配方式下,部分硬件资源无法被有效利用
  • IP和端口紧张:被长时间的固定占用,导致不够用
  • 维护成本高:复杂的工具组合和框架,导致难以有效维护
  • 服务难伸缩:无法根据实际服务需求快速扩充和缩小服务规模

3 - CI&CD工具栈

在实施DevOps过程中,构建自动化、流程化、智能化的CI&CD,是必不可少的重要事项和核心部分。
CICD也是一个宽泛的的技术栈,包含众多的工具与方法,主要包括如下环节和内容

  • 源代码管理:版本管理(GitLab)、代码扫描(Sonar)、代码审核(Gerrit)等
  • 集成部署:编译打包(Maven)、流水线(Jenkins)、容器化部署(Docker)等
  • 自动化测试:单元测试(Junit/PyUnit)、测试框架(Robotframe)、接口测试(RESTful)等
  • 生产发布:镜像仓库、镜像管理、网络管理(VLAN)、持久化方案、服务发现、服务编排(Kubernetes)等
  • 运维与监控:配置(Ansible)、监控(Zabbix)、日志(ELK)等
    在实现CICD的过程中,不仅要理解理论,更要围绕问题讲思路、讲办法,讲实际行动 ,也就是要掌握原理、要点和操作。

4 - CI&CD所需要具备的要素

  • 全面的自动化测试:构建实用的自动化测试流程和选择合适的工具
  • 灵活的基础设施。容器,虚拟机、云平台等
  • 版本控制工具与代码仓库
  • 自动化的构建和软件发布流程的工具
  • 反馈和分析机制:快速地反馈结果到相关人员,并迅速分析

5 - CI&CD的衡量指标

  • 代码发布频率与周期
  • 代码从提交到发布的速度
  • 故障变更率
  • 事故恢复时间
  • 等等

6 - CI&CD实施云平台化

容器技术能够让应用一次构建,到处运行(物理机、虚拟机、公有云、私有云、各类型系统等),加快了开发和构建,实现了快速交付和部署,同时还在系统操作层面提供资源隔离服务。
因此,CI&CD的虚拟化、容器化、云平台化是大规模部署最适合的途径,也是企业提升生产力的合适选择。

针对于大多数中小型企业来说,可能没有资源或技术储备去构建一个私有化的云平台,但可以选择在公有云上实现CI&CD。
当前主流云平台都提供了从代码库下拉代码、编译打包、单元测试、镜像制作、容器发布的功能,基本上具备了完整的持续集成、持续发布和持续部署的服务能力。

7- CI&CD与DevOps的关系

DevOps是一套工具集合、一组过程与方法、一种组织形式与文化。
DevOps工具和方法的实践与落地,具体的可见的结果就是构建一套高效可用的CI&CD平台。
简单的来说,在应用CI&CD后,再加上Web版本的门户,集中的账户管理系统以及运维监控体系,即可打造一个基础的自动化DevOps平台。

DevOps - CI&CD的更多相关文章

  1. DevOps - CI/CD - Jenkins

    Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建.测试和部署等功能.本文以 CentOS7 环境为例,总结了 Jenkin ...

  2. CI Weekly #1 | 这份周刊,带你了解 CI/CD 、DevOps、自动化测试

    原文首次发布与 flow.ci Blog >> 链接,转载请联系:) 准备了很久,CI Weekly 第一期终于来了. CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分 ...

  3. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  4. 唱吧DevOps的落地,微服务CI/CD的范本技术解读

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  5. 【Devops】【docker】【CI/CD】2.docker启动jenkins环境+安装必要的插件

    [注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...

  6. 【Devops】【docker】【CI/CD】1.docker搭建Gitlab环境

    CI/CD[持续化集成/持续化交付] docker搭建Gitlab环境 1.查询并拉取gitlab镜像 docker search gitlab docker pull gitlab/gitlab-c ...

  7. 阿里CI/CD、DevOps、分层自动化技术

    原文地址:http://www.infoq.com/cn/news/2017/01/alibaba-yunxiao-cicd-devops 在互联网时代,产品快速迭代的重要性不言而喻.不管是传统企业还 ...

  8. .Net Core DevOps -免费用Azure四步实现自动化发布(CI/CD)

    前言 linux 大行其道的今天想必大家都已经拥抱 core 了吧,通常的方案都是 gitlab+jenkins+centos,但是这样的方案不适合我这种懒人,一直在寻求简单的解决方案,在寻求方案的过 ...

  9. 企业DevOps研发模式下CI/CD实践详解指南

    阅读全文大概需要 10分钟. 1. 前言 借着公司今年新组建的中台研发部东风,我作为其中的主要负责人,在研发中心主导推行DevOps研发管理模式转变及质量管理创新建设,本篇文章摘取自今年9月底,笔者在 ...

随机推荐

  1. 检索 COM 类工厂中 CLSID 解决办法

    我的服务器:windows server 2008(64位)+microsoft office 2007 企业版+windows服务应用程序 业务:调用msdn提供的SaveAsPDFandXPS.e ...

  2. jquery mobile 入门级实战1

    第一步:使用CDN接入jquery mobile CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环 ...

  3. BZOJ 1704: [Usaco2007 Mar]Face The Right Way 自动转身机( 贪心 )

    贪心...先枚举k, 然后从左往右扫一遍, 发现位置p的牛的状态不符合就将 [p, p + k ) 的牛都转身, 假如p + k - 1 已经超过了最右边牛的位置那这个k就不符合要求. 符合要求的就可 ...

  4. GetWindowRect和GetClientRect的区别详解

    一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的? ...

  5. 9.TCP:传输控制协议

    1.TCP功能     TCP向应用层提供面向连接的.可靠的字节流服务.TCP可以认为是一个没有选择确认或否认的滑动窗口协议.     TCP将用户数据打包构成报文段:它发送数据后启动一个定时器:另一 ...

  6. DirectShow中写push模式的source filter流程 + 源代码(内附详细注释)

    虽然网上已有很多关于DirectShow写source filter的资料,不过很多刚开始学的朋友总说讲的不是很清楚(可能其中作者省略了许多他认为简 单的过程),读者总希望看到象第一步怎么做,第二步怎 ...

  7. 芝麻HTTP:JavaScript加密逻辑分析与Python模拟执行实现数据爬取

    本节来说明一下 JavaScript 加密逻辑分析并利用 Python 模拟执行 JavaScript 实现数据爬取的过程.在这里以中国空气质量在线监测分析平台为例来进行分析,主要分析其加密逻辑及破解 ...

  8. SQLServer Always On FCI 脑裂及可疑状态修复

    FCI 双节点集群,因为晚上集群节点间的网络中断过.两个节点都觉得还有一个节点宕机,在各节点的集群管理中都看到对方已宕机. 连接到集群IP.提示 msdb 数据库有问题: watermark/2/te ...

  9. Entity Framework学习初级篇2

    Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager类的介绍 本节,简单的介绍E ...

  10. 排序算法的JS实现

    排序算法是基础算法,虽然关键在于算法的思想而不是语言,但还是决定借助算法可视化工具结合自己常用的语言实现一下 1.冒泡排序 基本思路:依次比较两两相邻的两个数,前面数比后面数小,不变.前面数比后面数大 ...