正文
DevOps - CI&CD
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
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实施云平台化
- 代码发布频率与周期
- 代码从提交到发布的速度
- 故障变更率
- 事故恢复时间
- 等等
6 - CI&CD实施云平台化
容器技术能够让应用一次构建,到处运行(物理机、虚拟机、公有云、私有云、各类型系统等),加快了开发和构建,实现了快速交付和部署,同时还在系统操作层面提供资源隔离服务。
因此,CI&CD的虚拟化、容器化、云平台化是大规模部署最适合的途径,也是企业提升生产力的合适选择。
针对于大多数中小型企业来说,可能没有资源或技术储备去构建一个私有化的云平台,但可以选择在公有云上实现CI&CD。
当前主流云平台都提供了从代码库下拉代码、编译打包、单元测试、镜像制作、容器发布的功能,基本上具备了完整的持续集成、持续发布和持续部署的服务能力。
7- CI&CD与DevOps的关系
DevOps是一套工具集合、一组过程与方法、一种组织形式与文化。
DevOps工具和方法的实践与落地,具体的可见的结果就是构建一套高效可用的CI&CD平台。
简单的来说,在应用CI&CD后,再加上Web版本的门户,集中的账户管理系统以及运维监控体系,即可打造一个基础的自动化DevOps平台。
DevOps - CI&CD的更多相关文章- DevOps - CI/CD - Jenkins
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建.测试和部署等功能.本文以 CentOS7 环境为例,总结了 Jenkin ...
- CI Weekly #1 | 这份周刊,带你了解 CI/CD 、DevOps、自动化测试
原文首次发布与 flow.ci Blog >> 链接,转载请联系:) 准备了很久,CI Weekly 第一期终于来了. CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- 【Devops】【docker】【CI/CD】2.docker启动jenkins环境+安装必要的插件
[注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...
- 【Devops】【docker】【CI/CD】1.docker搭建Gitlab环境
CI/CD[持续化集成/持续化交付] docker搭建Gitlab环境 1.查询并拉取gitlab镜像 docker search gitlab docker pull gitlab/gitlab-c ...
- 阿里CI/CD、DevOps、分层自动化技术
原文地址:http://www.infoq.com/cn/news/2017/01/alibaba-yunxiao-cicd-devops 在互联网时代,产品快速迭代的重要性不言而喻.不管是传统企业还 ...
- .Net Core DevOps -免费用Azure四步实现自动化发布(CI/CD)
前言 linux 大行其道的今天想必大家都已经拥抱 core 了吧,通常的方案都是 gitlab+jenkins+centos,但是这样的方案不适合我这种懒人,一直在寻求简单的解决方案,在寻求方案的过 ...
- 企业DevOps研发模式下CI/CD实践详解指南
阅读全文大概需要 10分钟. 1. 前言 借着公司今年新组建的中台研发部东风,我作为其中的主要负责人,在研发中心主导推行DevOps研发管理模式转变及质量管理创新建设,本篇文章摘取自今年9月底,笔者在 ...
随机推荐- ztree.js的使用整理
/** 配置:知识点管理 */ var setting = { view: { showIcon: false, addDiyDom: addPrevDom, addHoverDom: addHove ...
- cocos2d-x中Node与Node层级架构
Cocos2d-x采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结构中的节 ...
- Contest2037 - CSU Monthly 2013 Oct (problem D :CX and girls)
[题解]: 最短路径问题,保证距离最短的同时,学妹权值最大,哈哈 [code]: #include<iostream> #include<queue> #include< ...
- Libevent源码分析(一):最小堆
Libevent中的timeout事件是使用最小堆来管理维护的.代码位于<minheap-internal.h>. 看函数命名和代码风格应该是一个C++程序员,函数名都挺好懂的,只是下面这 ...
- 每天一个Linux命令(16)--which命令
把昨天的,留给昨天:今日,你将重新开始. 好的,在第一个阶段我们学习了 文件目录的操作命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ls cd pwd mkdir ...
- python的append insert extend pop del remove使用
对于 python 数组的操作,有插入和删除,下面介绍各个函数的功能: 插入 插入的函数有 append.insert .extend append append(i) 是在数组的末尾插入一个元素 i ...
- HTML笔记(适合新手入门)
HTML Web 标准构成 Web标准不是某一个标准,而是由W3C和其他标准化组织制定的一系列标准的集合. 主要包括结构(Structure).表现(Presentation)和行为(Behavior ...
- hdu3586 树形dp+二分答案
/* dp[i]表示孤立i结点的费用,二分功率上限w,即dp[i]在选择时不可以选择功率大于w的边 */ #include<bits/stdc++.h> using namespace s ...
- LR两种录制模式的区别
loadrunner的录制模式分为如下两种录制模式: HTML-based script,也称为高层录制: URL-based script,也称为底层录制. 两种录制模式的区别:1)脚本不同:高层录 ...
- 《JavaScript面向对象编程指南》读书笔记②
概述 <JavaScript面向对象编程指南>读书笔记① 这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的 ...
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建.测试和部署等功能.本文以 CentOS7 环境为例,总结了 Jenkin ...
原文首次发布与 flow.ci Blog >> 链接,转载请联系:) 准备了很久,CI Weekly 第一期终于来了. CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分 ...
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
[注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...
CI/CD[持续化集成/持续化交付] docker搭建Gitlab环境 1.查询并拉取gitlab镜像 docker search gitlab docker pull gitlab/gitlab-c ...
原文地址:http://www.infoq.com/cn/news/2017/01/alibaba-yunxiao-cicd-devops 在互联网时代,产品快速迭代的重要性不言而喻.不管是传统企业还 ...
前言 linux 大行其道的今天想必大家都已经拥抱 core 了吧,通常的方案都是 gitlab+jenkins+centos,但是这样的方案不适合我这种懒人,一直在寻求简单的解决方案,在寻求方案的过 ...
阅读全文大概需要 10分钟. 1. 前言 借着公司今年新组建的中台研发部东风,我作为其中的主要负责人,在研发中心主导推行DevOps研发管理模式转变及质量管理创新建设,本篇文章摘取自今年9月底,笔者在 ...
- ztree.js的使用整理
/** 配置:知识点管理 */ var setting = { view: { showIcon: false, addDiyDom: addPrevDom, addHoverDom: addHove ...
- cocos2d-x中Node与Node层级架构
Cocos2d-x采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结构中的节 ...
- Contest2037 - CSU Monthly 2013 Oct (problem D :CX and girls)
[题解]: 最短路径问题,保证距离最短的同时,学妹权值最大,哈哈 [code]: #include<iostream> #include<queue> #include< ...
- Libevent源码分析(一):最小堆
Libevent中的timeout事件是使用最小堆来管理维护的.代码位于<minheap-internal.h>. 看函数命名和代码风格应该是一个C++程序员,函数名都挺好懂的,只是下面这 ...
- 每天一个Linux命令(16)--which命令
把昨天的,留给昨天:今日,你将重新开始. 好的,在第一个阶段我们学习了 文件目录的操作命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ls cd pwd mkdir ...
- python的append insert extend pop del remove使用
对于 python 数组的操作,有插入和删除,下面介绍各个函数的功能: 插入 插入的函数有 append.insert .extend append append(i) 是在数组的末尾插入一个元素 i ...
- HTML笔记(适合新手入门)
HTML Web 标准构成 Web标准不是某一个标准,而是由W3C和其他标准化组织制定的一系列标准的集合. 主要包括结构(Structure).表现(Presentation)和行为(Behavior ...
- hdu3586 树形dp+二分答案
/* dp[i]表示孤立i结点的费用,二分功率上限w,即dp[i]在选择时不可以选择功率大于w的边 */ #include<bits/stdc++.h> using namespace s ...
- LR两种录制模式的区别
loadrunner的录制模式分为如下两种录制模式: HTML-based script,也称为高层录制: URL-based script,也称为底层录制. 两种录制模式的区别:1)脚本不同:高层录 ...
- 《JavaScript面向对象编程指南》读书笔记②
概述 <JavaScript面向对象编程指南>读书笔记① 这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的 ...