共计 2870 个字符,预计需要花费 8 分钟才能阅读完成。
基本概念
继续集成
(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 就是海市蜃楼。
如果本文对您有帮忙,欢送
关注
和点赞
`,您的反对是我保持创作的能源。转载请注明出处!