当前位置: 首页 > 后端技术 > Java

CI-CD和DevOps还在混淆吗?今天的文章让你了解

时间:2023-04-01 21:17:58 Java

持续集成(ContinuousIntegration)的基本概念持续集成的重点是构建、编译和测试。开发人员每天多次向分支提交代码。分支在合并到主干之前,需要通过编译和测试识别出问题所在。持续集成过程通过自动化构建(主要是构建编译、自动化测试)进行验证,尽早发现集成错误。持续集成的核心意义:通过自动化测试尽早发现代码问题。持续交付:持续交付是指尽快在线发布产品的过程。持续交付是基于持续集成的扩展。也就是说,除了自动化编译和自动化测试,我们还需要一个自动化的发布流程,才能尽快上线。方式为手动点击部署,实现快速上线。部署环境的部署顺序一般是公司内的开发环境、测试环境、预发布环境(如生产环境)、正式生产环境。如果代码在预发布环境测试通过,那么就可以手动部署生产环境,达到上线的目的。持续交付的核心意义:尽快将最终产品发布到线上环境,供用户使用。持续交付是每个企业追求的目标。我们常说的CI/CD中的CD泛指持续交付。持续部署:持续部署是在持续交付的基础上,将编译、测试、打包和部署到生产环境的过程自动化。持续部署的核心含义:将迭代需求以自动化的方式持续部署到生产环境。一般来说,在非生产环境基本可以实现持续部署。然而,并不是每个企业都能实现生产环境的持续部署。主要原因是受限于各种系统功能依赖和不完善的自动化测试。一旦在生产中部署自动化,可能会导致严重的生产事故。说明:无论是持续集成、持续交付还是持续部署,想要实现整个过程,基本都离不开CI服务器。持续集成的特??点可以快速定位错误,测试过程可以及时暴露问题;借助统一的代码库,避免与主干的大偏差;减少不必要的成本投入,自动解决重复繁琐的事情,不浪费人力和时间;workProcess工作阶段持续集成工作流一般包括以下几个阶段:初始化CI流程的基本CI流程的配置,例如脚本和计划任务。Pullthelatestcode从源代码库中拉取最新代码到构建服务器磁盘。构建通用源代码仓库的自包含构建,可以通过配置的脚本触发执行构建。比如Java的构建,一般都是基于Maven或者Gradle。执行测试测试阶段一般包括单元测试和集成测试。Java中的单元测试通常指的是JUnit。结果处理CI流程执行的最终结果要么成功,要么失败,需要将结果通知给相应的人员。一般的通知方式有邮件、钉钉、短信等。集成工具TravisCIBambooTeamCityCircleCIGitlabCIJenkinsDevOps概念DevOps这个词实际上是Development(开发)和Operation(运维)这两个词的组合。DevOps不是一种技术,也不是一套流程和方法论,更不是一套简单的工具产品。维基百科对DevOps的定义是这样的:DevOps是一组过程、方法和系统的统称,用于促进开发、技术操作(运维)和质量保证(QA)部门之间的沟通、协作和集成。通过DevOps的实践,将开发、测试、运维之间的工作串联起来,以持续构建、自动化测试、持续发布为目标,所有流程完全自动化,最大限度减少重复的人工输入.同时,基础环境的自动化建设也降低了人为因素引发事故的风险。下图展示了DevOps涉及的流程:DevOps这个词是PatrickDebois在2009年创造的。出生于比利时的Patrick先生曾是一名抑郁的IT顾问,饱受开发与运维的分离与伤害。2009年,他参加了一次技术会议,听了一场题为每天10次以上部署:Flickr的开发和运营合作的演讲。他受到启发并创造了DevOps一词。目前,DevOps正处于快速成长阶段。尤其是在大型企业中,DevOps获得了很大的普及。企业越大,越喜欢DevOps。Adobe、亚马逊、苹果、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、星巴克、沃尔玛、索尼等公司都在采用DevOps。工具链由于DevOps是一种跨职能的工作模型,实践中需要使用不同的工具集(简称“工具链”),而不是单一的工具集。这些工具链应符合以下一个或多个类别,它们反映了开发和交付过程的关键方面:编码-代码开发和审查,源代码管理工具,代码合并构建-持续集成工具,构建状态测试---持续测试工具,提供快速及时的业务风险反馈发布---变更管理,发布审批,发布自动化配置---基础设施配置和管理,基础设施监控作为代码工具---应用性能监控,最终用户体验DevOps生态工具链图:DevOps需要的常用工具,通过技术工具链完成持续集成、持续交付、用户反馈和系统优化的集成。工具链包括版本控制与协同开发工具、自动化构建与测试工具、持续集成与交付工具、部署工具、维护工具、监控、预警与分析工具等。版本控制和协作开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar自动化构建和测试:ApacheAnt、Maven、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit持续集成和交付:Jenkins、Capistrano、BuildBot、Fabric,Tinderbox,TravisCI,flow.ciContinuum,LuntBuild,CruiseControl,Integrity,Gump,Go容器平台:Docker,Rocket,Ubuntu(LXC),第三方厂商如(AWS/Aliyun)配置管理:Chef,Puppet,引擎。分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、KibanDevOps的目标更快的上市时间增加部署频率更短的修复时间降低发布失败率更快的平均恢复时间总之DevOps旨在最大限度地提高可预测性、效率、安全性和操作过程的可维护性。两者关系小结从DevOps流程和工具链可以知道,DevOps是持续集成思想的延伸。持续集成/部署是DevOps的技术核心。没有自动化测试和持续集成/部署,DevOps就是空中楼阁。本文参与思维科技论文征集,正在阅读的朋友欢迎加入。如果本文对您有帮助,欢迎关注点赞`,您的支持是我坚持创作的动力。转载请注明出处!