持续集成

简介

持续集成(Continuous integration,简称CI)指的是频繁地(一天多次)将代码集成到主干。
持续集成的目的就是让产品可以快速迭代,同时还能保证高质量,它的核心措施是将代码集成到主干之间,必须通过自动化测试,只要有一个测试用例失败,就不能集成。

通过持续集成,团队可以快速从一个功能到另一个功能,简而言之,敏捷开发很大一部分要归功于持续集成。

持续集成流程


步骤:

  • 提交:持续集成第一步就是开发人员将代码进行提交并推送到代码仓库,比如git、svn。
  • 测试(第一轮):代码仓库对commit操作配置了钩子(回调),只要提交代码,就会跑自动化测试。
  • 构建:通过了第一轮测试,代码就可以合并到主干,就算可以交付了,交付后,先进行构建,再进入第二轮测试,所谓构建,就是将源代码转换为可以运行的实际代码,比如.java变.class。
  • 测试(第二轮):构建完成后,就要进行第二轮测试,如果第一轮涵盖所有测试内容,这个流程就可以忽略,但是此时构建、和第一轮测试的先后顺序要交换,先构建再进行第一轮测试。
  • 部署:过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包(tar filename.tar * )存档,发到生产服务器。
  • 回滚:一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。

持续集成的组成因素:

  • 一个自动构建的过程,从代码检出,编译构建,运行测试,结果记录,测试统计,等都是自动完成,无需人工干预。
  • 一个代码存储库,版本库,比如 Git、Svn。
  • 一个持续集成服务器,比如Jenkins就是一个配置简单和使用方便的持续集成服务器。
持续集成好处:
  1. 降低风险,由于持续集成不断去构建、编译、测试,可以早期就发现问题,所以修复代价就小一点。
  2. 对系统进行健康持续检查,减少发布风险带来的问题。
  3. 减少重复性工作。
  4. 持续部署,提供可部署单元包。
  5. 持续交付可供使用的版本。
  6. 增强团队信心。

持续部署已经包含在持续集成里面,持续部署的前提就是持续集成。

持续集成和持续部署CI/CD简介相关推荐

  1. Android架构篇-5 CI/CD(持续集成、持续交付、持续部署)

    Android架构篇-5 CI/CD(持续集成.持续交付.持续部署) CI CI是指持续集成,代码的更新会定期自动构建.测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持 ...

  2. iOS架构篇-5 CI/CD(持续集成、持续交付、持续部署)

    iOS架构篇-5 CI/CD(持续集成.持续交付.持续部署) CI CI是指持续集成,代码的更新会定期自动构建.测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持续部署, ...

  3. CI/CD是什么?如何理解持续集成、持续交付和持续部署

    CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时 ...

  4. 持续集成与持续部署(五)01-TravisCI——使用简介-Travis CI 只支持 Github,提供的是持续集成服务 配置项目的.travis.yml文件

    持续集成与持续部署(五)01-TravisCI--使用简介-Travis CI 只支持 Github,提供的是持续集成服务 & 配置项目的.travis.yml文件 TravisCI 使用简介 ...

  5. 持续集成、持续交付(CI/CD)开篇,先来唠唠嗑

    前言 现在稍微有点规模的系统,很多都是采用分布式/微服务架构,将一个大系统拆分为很多个功能模块进行开发.测试.发布.管理等,如果全部流程都采用人工的形式进行的话,效率肯定是超级不高效滴.而且现在很多项 ...

  6. 持续集成与持续部署(四)01-Jenkins——简介-基于Java开发的一种开源持续集成工具

    持续集成与持续部署(四)01-Jenkins--简介-基于Java开发的一种开源持续集成工具 Jenkins 使用简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控 ...

  7. 测试开发必会:正确理解持续集成和持续交付 CI/CD

    正确理解并掌握持续集成和持续交付(CI/CD)是当下测试和质量保障相关同学的必备技能.本文作者为霍格沃兹测试学院特邀嘉宾,资深技术专家蒋刚毅,原文首发 TesterHome 社区,标题为<持续交 ...

  8. 持续集成与持续部署(五)03-TravisCI——Travis CI和Docker的持续集成之所使用的基础组件、dockerfile配置、docker部署脚本

    持续集成与持续部署(五)03-TravisCI--Travis CI和Docker的持续集成之所使用的基础组件.dockerfile配置.docker部署脚本 所使用的基础组件 代码托管在Github ...

  9. 持续集成与持续部署(三)——实现持续集成的效率工具对比之Jenkins、Travis CI、Circle CI和其他持续集成工具

    持续集成与持续部署(三)--实现持续集成的效率工具对比之Jenkins.Travis CI.Circle CI和其他持续集成工具 效率工具对比 点击查看效率工具 1. Jenkins Jenkins, ...

最新文章

  1. 剑指offer:矩形覆盖 python 实现
  2. Python标准库_ sys,random,time
  3. centos 部署mysql5.7_centos7部署MySQL 5.7
  4. Scala函数简化写法
  5. linux下使用protobuf实现简单配置功能
  6. apache php mysql 开发_Wndows下Apache+php+Mysql环境的搭建及其涉及的知识(转)
  7. python学习系列:装饰器
  8. 在AD中安装元件和封装库
  9. windows怎么删除服务, OpenService 失败 5,拒绝访问解决
  10. smart3d加载到谷歌_Android Google Smart Lock
  11. 变色龙引导安装黑苹果 遇到的问题的解决办法
  12. 如何删除桌面右键菜单中的英特尔核心显卡选项
  13. 这是最好的时光,这是最坏的时光 SNAPSHOT
  14. linux:The CXX compiler identification is unknown
  15. 彩色图像转换灰度图像
  16. USTC English Club20171010
  17. Nginx学习心得总结第一章
  18. 拓嘉启远:拼多多卖书对店铺的要求
  19. 猎豹掌门人出走,傅盛的“梦游”该醒醒了
  20. 国内外深度学习开放数据集下载集合(值得收藏,不断更新)

热门文章

  1. Python学习笔记:初识Tushare
  2. Java讲课笔记23:Map接口及其实现类
  3. Flask学习笔记02:实现用户登录功能
  4. [noip2017]列队 splay
  5. 怎样把台式机变成虚拟服务器,怎么把文件传到虚拟主机
  6. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(8) - 数据类型转换指令
  7. Pentium II Pentium III架构/微架构/流水线 (6) - SSE
  8. python基础练习题(按条件对指定序列求和,打印99乘法表、求斐波那契数列、百马百担、求水仙花数、求n以内的所有质数(素数)和)、集合的讲解、一些公关方法
  9. Mybatis入门-关联查询(八)
  10. android 获取是否连接wifi热点,android - 如何知道您是否已连接到Wifi热点/ Wifi / Wifi Direct - 堆栈内存溢出...