基本概念

继续集成
(Continuous Intergration)

继续集成的重点在于构建编译及测试,开发人员每天要提交很屡次代码到分支,在分支合并到骨干前,须要通过编译和测试辨认出问题。继续集成的流程就是通过自动化的构建(次要是构建编译、自动化测试)来验证,从而尽早地发现集成谬误。

继续集成的外围意义:通过自动化测试尽早的发现代码的问题。

继续交付
(Continuous Delivery):

继续交付指的是将产品尽可能快的公布上线的过程。继续交付是在继续集成根底上的扩大,也就是说除了自动化编译、自动化测试,为了尽快上线咱们还须要自动化公布流程,整个流程实现后,依据理论须要,能够周期性的进行产品上线公布,上线形式为人工点击部署实现疾速上线。部署环境的先后部署程序,个别在公司都是开发环境、测试环境、预公布环境(类生产环境)和正式生产环境,如果代码在预公布环境测试通过,那么就可通过手动的形式部署生产环境实现上线的目标。

继续交付的外围意义:尽快的将最终的产品公布到线上环境,给用户应用。继续交付是每个企业谋求的指标,咱们常说的CI/CD里的CD个别指的就是继续交付。

继续部署
(Continuous Deployment):

继续部署就是在继续交付的根底上,将编译、测试、打包部署到生产环境的过程做成自动化。

继续部署的外围意义:继续的将迭代的需要自动化的形式部署到生产环境。一般来说,非生产环境的继续部署根本都能实现。但生产环境的继续部署并不是每个企业都能做到,次要起因是受限于各种零碎性能依赖、自动化测试不欠缺等因素,自动化一旦部署到生产,将可能造成重大生产事变。

阐明:无论是继续集成、继续交付还是继续部署,如果要实现整个流程,基本上离不开CI服务器。

继续集成

特点
  • 疾速定位谬误,测试环节能够及时裸露问题;
  • 防止大幅度偏离骨干,借助对立的代码库;
  • 缩小不必要的老本投入,能够自动化解决的反复乏味的事件,没必要节约人力和工夫;
工作流程

工作阶段
继续集成工作流程大体包含这么几个阶段:
  • 初始化CI流程

    根本的CI流程的配置,比方脚本、定时工作等。

  • 拉取最新代码

    从源码仓库拉取最新代码到构建服务器磁盘上。

  • 构建

    个别源码仓库自蕴含构建,可通过配置的脚本触发执行构建。比方Java的构建个别基于Maven或Gradle。

  • 执行测试

    测试阶段个别蕴含单元测试和集成测试。Java中的单元测试常指JUnit。

  • 后果解决

    CI流程执行的最初后果要么是胜利,要么是失败,后果须要告诉给对应的人员,个别的告诉形式有邮件、钉钉、短信。

集成工具
  • Travis CI
  • Bamboo
  • TeamCity
  • CircleCI
  • Gitlab CI
  • Jenkins

DevOps

概念
DevOps这个词,其实就是Development(开发)和Operation(运维)两个词的组合。

DevOps 不是一项技术,也不是一套流程和方法论,更不是一套简略的工具产品。DevOps的维基百科定义是这样的:DevOps是一组过程、办法与零碎的统称,用于促成开发、技术经营(运维)和质量保证(QA)部门之间的沟通、合作与整合。

通过实际 DevOps,能够将开发、测试、运维之间的工作串联起来,以继续构建、自动化测试、继续公布为指标,将所有流程全副自动化,最大化缩小了重复性的人力投入。同时,根底环境的自动化构建也升高了因为人的起因带来的意外危险。下图为DevOps所蕴含的流程:

DevOps 这个词是Patrick Debois 于2009 年发明的。出生于比利时的Patrick 学生已经是一名苦闷的IT 咨询师,饱受开发和运维互相割裂及挫伤之苦。2009 年他加入了一个技术大会,在会上听了名为10+ Deploys Per Day: Dev and Ops Cooperation at Flickr 的演讲,深受启发,并发明了DevOps 这个词。

目前,DevOps处于高速增长的阶段。尤其是在大企业中,DevOps受到了宽泛的欢送。越大的企业,越喜爱DevOps。包含Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Walmart、Sony等公司,都在采纳DevOps。

工具链

因为DevOps是一种跨职能的工作模式,因而实际过程须要应用不同的工具集(被称为 "工具链"),而不是繁多的工具集。这些工具链应该合乎以下一个或多个类别,这些类别反映了开发和交付过程中的关键环节:

  • 编码---代码开发和审查、源代码管理工具、代码合并
  • 构建---继续集成工具,构建状态
  • 测试---继续测试工具,提供疾速、及时的业务危险反馈
  • 公布---变更治理、公布审批、公布自动化
  • 配置---基础设施配置和治理,基础设施作为代码工具的基础设施
  • 监控---利用性能监控、终端用户体验
DevOps生态圈工具链图:
常用工具

DevOps 须要要通过技术工具链实现继续集成、继续交付、用户反馈和系统优化的整合。工具链包含版本控制&合作开发工具、自动化构建和测试工具、继续集成&交付工具、部署工具、保护工具、监控,正告&剖析工具等等。

  • 版本控制&合作开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
  • 自动化构建和测试:Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit
  • 继续集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
  • 容器平台:Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/阿里云)
  • 配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
  • 微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
  • 服务开明:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
  • 日志治理:Logstash、CollectD、StatsD
  • 监控,正告&剖析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kiban
DevOps的指标
  • 更快的上市工夫
  • 进步部署频率
  • 更短的修复工夫
  • 升高公布失败率
  • 更快的均匀复原工夫

总结来说DevOps的指标是最大限度地进步经营流程的可预测性、效率、安全性和可维护性。

小结

两者关系
  • 由DevOps的流程和工具链咱们能够得悉,DevOps 是继续集成思维的延长
  • 继续集成/部署是 DevOps 的技术外围,在没有自动化测试、继续集成/部署之下,DevOps就是海市蜃楼。

如果本文对您有帮忙,欢送关注点赞`,您的反对是我保持创作的能源。

转载请注明出处!