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. wpf ,tooltip的style

    <Style x:Key="MyToolTipStyle" TargetType="ToolTip"> <Setter Property=&q ...

  2. iOS设备屏幕像素总览

    本文永久地址为http://www.cnblogs.com/ChenYilong/p/4011728.html ,转载请注明出处.   本文永久地址为http://www.cnblogs.com/Ch ...

  3. http soap关系

    http:是一个客户端和服务器端请求和应答的标准(TCP).http协议其目的是为了提供一种发布和接收htttp页面的方法 一http协议的客户端与服务器的交互:由HTTP客户端发起一个请求,建立一个 ...

  4. MySQL表复制

    http://www.2cto.com/database/201202/120259.html http://www.cnblogs.com/sunss/archive/2010/10/08/1845 ...

  5. CSS兼容性常见问题总结

    DIV+CSS设计IE6.IE7.FF 兼容性 DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使 ...

  6. HDU 1007 近期点对

    分治法求近期点对 递归将点不断分成小组.计算最短距离.此时的最短距离不过两点都属两块的某一块(这里的切割点是mid点). 还须要考虑两点分属两块的情况. 这时对于选点则把范围缩小到了以mid为中心. ...

  7. oracle导入时提示IMP-00010:不是有效的导出文件,头部验证失败

    oracle导入时提示IMP-00010:不是有效的导出文件,头部验证失败: 原因分析:导出的oracle的版本与导入的oracle数据库的版本不一致: 可直接将dmp文件用notepad++打开修改 ...

  8. 【经验随笔】Restlet Client发送XML格式参数消息

    背景介绍 Restlet Client是一款模拟客户端发送http请求的chrome插件,可以作为驱动调试后台程序,个人觉得比POSTMAN好用.CXF是一款发布restful服务的开源组件. 编写r ...

  9. python笔记:#005#算数运算符

    算数运算符 计算机,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 01. 算数运算符 算数运算符是 运算符的一种 是完成基本的算术运算使用的符号,用来处理 ...

  10. 002_CentOS-6.4-x86_64安装包的说明

    http://mirrors.sohu.com/centos/6.6/isos/x86_64/?qq-pf-to=pcqq.group //souhu镜像下载地址 0_README.txt 25-Oc ...