CI & CD 介绍

一、DevOps概念

  DevOps 一词是 Development 和 Operations 的组合,它没有一个固定的词义,在我看来,它是一种框架、方法论,而非一项技术工具。它的出现是为了促进开发、技术运营和质量保障部门之间的沟通、协作与整合,重视开发人员和运维人员之间的沟通协作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。他涵盖一系列的基本原则和实践,其核心价值在于以下两点:

  • 更快速地交付, 响应市场的变化。
  • 更多的关注业务的改进和提升。

  PS:大白话:多动脑,自动化;多沟通,少动手。

  

二、DevOps作用

  1. 产品迭代

    • 在现实生活中,多数用户往往不知道自己想要什么,但是当我们设计出一款产品后,他会告诉我们他不需要什么,这样我们的产品就需要反复的迭代,不断的接近用户的一个渴望值,这个不断迭代的过程肯定是比较曲折的,那我们有什么好的办法快速的交付价值,灵活的响应变化呢?答案就是 DevOps。因为 DevOps 是面向业务目标,助力业务成功的最佳实践。
  2. 技术革新

    • 现在的 IT 技术架构随着系统的复杂化不断的革新,从早期的所有服务在一个系统中,发展到现在的微服务架构,从纯手动操作到半自动全自动流程,从单台物理机到云服务平台,这些可以称得上是DevOps的进化史。

  

三、DevOps技术栈

  1. 敏捷管理工具

    • Trello
    • Teambition
    • Worktile
    • Tower
  2. 产品 & 质量管理工具

    • Confluence
    • 禅道
    • Jira
    • Bugzila
  3. 代码仓库管理工具

    • Git
    • Gitlab
    • GitHub
    • Gitee
  4. 自动化构建工具

    • Gradle
    • Maven
    • SBT
    • ANT
  5. 虚拟化工具

    • VMware
    • VirtualBox
    • Vagrant
    • docker
  6. CI & CD工具

    • Jenkins
    • Hudson
    • Travis CI
    • Circle CI
    • Gitlab CI
  7. 自动化测试工具

    • Appium
    • Selenium
    • Mock
    • Jmeter
  8. 自动化运维工具

    • Ansible
    • Puppet
    • SaltStack
    • Chef
  9. 监控管理工具

    • Zabbix
    • ELK Stack
    • Amazon CloudWatch
    • prometheus

  PS:只是摘了一部分工具出来,其中有些我也没听过,emmmmm。

  

四、CI & CD 介绍

  1. CI(Continuous integration,持续集成):通俗讲就是研发人员写的代码可以持续的集成到整体代码中,并进行自动化测试。这样做可以快速发现错误,每完成一点更新就集成到主干,防止分支大幅偏离主干,大大提高了工作效率,让产品快速迭代的同时还能保持高质量。

  2. CD(Continuous Delivery,持续交付):频繁的将软件的新版本交给质量团队或者用户,以供评审,如果通过就进入生产阶段。持续交付可以看作持续集成的下一步。它强调的是:不管怎么更新,软件是随时随地可以交付的。

  3. CD(Continuous Deployment,持续部署):是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续部署的前提是能自动化完成测试、构建、部署等步骤。注:持续部署和持续交付的区别就是最终部署到生产环境是自动化的。

  

五、CI & CD 流程

  一般中等规模的互联网公司都会有四套环境,开发(dev,此环境完全交于开发人员维护)、测试(test,此环境完全交于测试人员维护)、预发(pre)、生产(prd),完整流程应该是将代码先合并到 test 分支,如下:

  1. 提交代码合并到 test 分支。开发人员向 test 分支提交代码。推代码操作自动触发构建(build),就是将源码转换为可以运行的实际代码。
  2. 第一轮测试。测试人员拿 test 分支代码构建出的程序包运行测试,如果测试不通过,把结果返回给开发人员,开发继续修改代码提交到 test 分支,再自动打包,以此循环,直到测试通过进入下一步。
  3. 提交。开发人员将测试通过的 test 分支代码合并入 pre 分支,自动构建打包。
  4. 第二轮测试。测试人员拿 pre 分支代码构建出的程序包运行测试,如果测试不通过,把结果返回给开发人员,开发继续修改代码提交到 test 分支,再自动打包,以此循环。注意是直接打回到最底层的 test 分支,重新来过。
  5. 部署。pre 的包测试没问题后,后续 prd 环境就直接使用 pre 环境的包,生产环境的部署一般都是由运维人员操作。

  PS:此流程不是一种标准,不代表所有公司的情况

  
  

写作不易,转载请注明出处,谢谢~~

原文地址:https://www.cnblogs.com/ccbloom/p/11826521.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


前言我们于2022年5月宣布推出 AmazonDevOpsGuruforServerless ,这是面向AmazonDevOpsGuru https://aws.amazon.com/devops-guru/的全新功能。通过此功能,开发人员能够提高无服务器应用程序的运行性能和可用性。该产品链接可点击:https://aws.amazon.com/devops-guru/fe
GIT、GITLAB、GITHUB、GITLIBGit是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户。随着越来越...
初识JFrog Artifactory背景在软件项目开发中,一个项目常常依赖于大量的外部库,而这些外部库又在不断的进行版本更新,特别是在当前微服务开发越来越流行的情况下,一个服务依赖于多个服务,如何管理依赖库以及依赖版本,确保开发有序进行呢?JFrog ArtiFactoryArtiFactory是一款二进制存储管理工具,用来管理构建构建工具(如:gradle)等所依赖的二进制仓库,以方...
在删除文件夹的时候,可能会遇到文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开,请关闭该文件夹或或文件,然后重试。这类无法关闭删除文件夹的情况,如下图所示。 解决这个的关键是,找到是哪个程序在使用该文件夹,把这个程序关闭掉就行了。 但有时说实在的并不好找。 下面来介绍一个方便的找到这些程序的方法。 首先按ctrl+shitf+esc快捷键,打开任务管理器。然后...
xcopy 若目标盘上不存在此子目录,而在目标盘的结束符又不以""为结束,则将提示:does destination specify a file name or directory name on the target[f=file,d=directory]?在目标盘上创建文件[按下]还是创建子目录[按下d] ?应选择d键如何在命令中指定copy的是一个文件或者目录?而不用再手动输入F或...
DevOps软件开发工艺解读随着业务复杂化和人员的增加,开发人员和运维人员逐渐演化成两个独立的部门,他们工作地点分离,工具链不同,业务目标也有差异,这使得他们之间出现一条鸿沟。而发布软件就是将一个软件想从鸿沟的这边送去那边,这之中困难重重。另一方面,行业竞争更加激烈,无论是客户还是公司自身,都要求软件能快速发布,频繁修改,而上边所说的这种隔阂,阻碍了开发团队的生产力,成了企业亟待解决的难题。面对...
创建任务创建任务比较简单,这里我们创建自由风格项目:General信息这里填写项目或任务的基本信息,如下:GitBucket这里我们用到的就以下两点,一个是参数化构建:构建的时候可以指定部分参数,比如这里我们这里指定要构建的分支作参数,第二个是丢弃旧的构建:这样每次构建都会丢弃之前历史构建,防止jenkins构建项目过多导致内存泄漏等问题:源码管理源码管理主要是填写我们要构建的...
一、在任务设置-构建触发器模块,选中“Build periodically”二、然后在日程表里输入你的定时构建时间,输入的时间语法参考如下:1、时间字段遵循cron的语法,每行由TAB或空格分隔的5个字段组成:MINUTE HOUR DOM MONOW DOW - 分钟:小时内的分钟数(0-59) - 小时 :一天中的小时(0-23) - DOM:月份的日子(1-31) ...
DevOps进阶(九)使用assembly plugin实现自定义打包assembly plugin的使用方式比较简单,主要有:1. 修改pom.xml pom.xml中设置如下:<build> <plugins> <plugin> <artifactId&g
<h2 id="1-操作环境"><strong>1. 操作环境</strong></h2>1. Windows:win72. JenkinsJenkins 1.6193. JavaJDK_1.7.0_64bit.exe4. Tomcatapache-tomcat-8.
在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。一.find命令基本格式:find path expres......
走近DevOps工程师我们之前已经听到很多谈论DevOps和DevOps世界的最新趋势的事情,但是就DevOps工程师本身,到底干些什么呢?在最纯粹的存在形式上来说,DevOps工程师是为了加快开发和运营团队之间的交付效率而存在的桥梁。DevOps工程师在软件生命周期中能带来什么?在传统的交付周期中,软件开发人员会在经年累月的编写代码后,将软件交给QA团队进行测试,然后将最终版本交给运营...
1、关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit。例如我jenkins的地址http://localhost:8080/,那么我只需要在浏览器地址栏上敲下http://localhost:8080/exit 网址就能关闭jenkins服务.2、重启Jenkieshttp://localhost:8080/restart3、重新加载配置信息http...
   我们在执行Jenkins的项目构建的时候一般都是通过web管理界面中的”构建”来执行项目构建操作,但是除此之外我们还可以通过项目配置中的”构建触发器”来触发构建操作,其中”构建触发器”有一种方式是通过配置令牌远程触发项目构建;要启用Token(令牌)远程触发项目构建首先要保证Jenkins服务安装了build-token-root 插件,...
maven三种打包插件maven有多种可以打包的插件,如下: plugin function 官网 maven-jar-plugin maven 默认打包插件,用来创建 project jar maven-shade-plugin 用来打可执行包,executable(fat) jar http://maven.apache.org/plug...
Linux下查看和添加环境变量$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。编辑你的 PATH 声明,其格式为:PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后......
贾磊:高级质量经理&敏捷教练曾就职于外企、国企、大型上市企业等,担任过测试工程师、测试经理、项目经理、敏捷教练、质量总监、高级质量经理等岗位。是一名敏捷变革的爱好者和践行者。爱好网球、羽毛球。正文原文链接:https://www.scaledagileframework.com/continuous-explorati
在IT流行语的字母组合中,DevSecOps是一个很容易让人混淆的缩写。DevSecOps是一个特定工具吗?是否有DevSecOps流程或最佳实践?DevSecOps应该成为内部IT部门的优先事项,还是更广泛的公司理念?如果一个公司已经利用了DevOps的流程和技术栈,那么它应该升级到DevSecOps吗?或者这只
企业项目开发流程商城1.1B2C直销商城商家与会员直接交易(BusinessToCustomer)1.2B2B批发商城商家与商家直接交易1.3B2B2C购物平台商家和会员在另一个商家提供的平台上面进行交易1.4C2B定制商城会员向商家发起定制商品的需求,商家去完成。1.5O2O线上线下
jenkins清除工作空间报错 错误如下: Error:WipeOutWorkspaceblockedbySCM   解决方法:进入jenkins服务器,进入workspace,手动rmcd/var/jenkins_home/workspace  ===================注释==================如果你的启动命令如下:【进行了外部目录的挂载