想搞懂持续交付理论和实践,你只差这三个问题

搞懂,持续,交付,理论,实践,三个,问题 · 浏览次数 : 345

小编点评

**持续交付** 持续交付是指,所有开发人员都在主干上进行小批量工作,或者在短时间存在的特性分支上工作且定期向主干合并,同时始终让主干保持可发布状态,保证代码可以按需进行一键式发布。 **持续交付持续交付** 持续交付持续交付是指,所有开发人员都在主干上进行小批量工作,或者在短时间存在的特性分支上工作且定期向主干合并,同时始终让主干保持可发布状态,保证代码可以按需进行一键式发布。

正文

摘要:今天,我们来了解下什么是“持续交付”及“持续交付”的实践。

云原生是当下IT圈非常热门的一个词,其目的是为了各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生包含很多技术,比如容器、微服务、DevOps、持续交付等,今天,我们来了解下什么是“持续交付”及“持续交付”的实践。

什么是持续交付

持续交付是指,所有开发人员都在主干上进行小批量工作,或者在短时间存在的特性分支上工作且定期向主干合并,同时始终让主干保持可发布状态,保证代码可以按需进行一键式发布。开发人员在引入任何回归错误时(包括缺陷、性能问题、安全问题、可用性问题等),都能快速得到反馈。一旦发现这类问题,就立即加以解决,从而保持主干始终处于可部署状态。

( Wikipedia: Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. )

持续交付是持续集成的延伸,将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改。如果代码没有问题,可以继续手动部署到生产环境中。

持续交付流水线

随着开发模式的日益成熟,软件开发过程中的每个环节已经越来越标准化了,但是这些环节都相对独立,需要一个东西将他们连接成一个整体。

如果我们能将这些环节——构建、发布、测试、部署有效的串联起来,形成一套完成的持续交付流水线,就能提高软件的发布效率与质量,持续不断的创造业务价值。

持续交付流水线工作流程大致如下:

  1. 开发人员将代码提交至代码仓库;
  2. 编译构建服务器获取到代码仓库文件变更信息,从代码仓库拉取代码,进行编译构建,生成二进制软件包,并将生成的软件包保存到制品库。构建过程中,每一步成功与否,都需将结果反馈给对应的开发人员。
  3. 构建完成后,将软件包按需部署到测试环境,进行测试,同时测试结果反馈给开发人员,
  4. 测试完成,由业务侧决定是否将软件包发布到生产环境,如果需要发布,则通过人工将软件包发布到生产环境。

当然,流程并非固定的,可以根据具体的业务需要,穿插其他流程,比如静态代码检查,性能测试等。

为什么要做持续交付

持续交付适用于几乎任何对质量、交付速度和结果的可预测性有要求的低风险部署和发布场景,包括嵌入式系统、web应用、移动应用等。开发者通过持续交付可以自动完成发布过程,并且可以通过单击按钮随时部署应用程序。

理论上讲,持续交付可以满足每日一次、每周一次等固定发布频率,或者满足业务需求的任何频率,但是,如果真的想获得持续交付的好处,应尽早将应用部署到生产环境,以确保可以小批次发布,并且发现问题后及时排除故障。

实践:通过华为云DevCloud实现持续交付

代码提交

华为云DevCould代码托管CodeHub是一个线上代码仓库,为开发者提供基于Git的在线代码托管服务,包括代码克隆/提交/推送/比较/合并/Code Review等功能。

开发人员可将代码提交至CodeHub。

编译构建

在“编译构建”服务中,用户可根据自己的编程语言,编程环境,自主配置所需的构建步骤,并对指定的代码仓库进行编译构建。

当然华为云DevCloud的编译构建功能支持持续集成:提交代码触发执行编译构建。

配置部署任务

部署功能与编译构建在使用方面类似,都是根据自己的业务场景配置相应的部署任务,任务配置完成后,可根据业务需要,执行部署任务。

持续交付流水线

之前提到了持续交付流水线,华为云DevCloud流水线功能可以将已经配置好构建,部署等服务串联到一起,实现一键部署。

 

 

点击关注,第一时间了解华为云新鲜技术~

与想搞懂持续交付理论和实践,你只差这三个问题相似的内容:

想搞懂持续交付理论和实践,你只差这三个问题

摘要:今天,我们来了解下什么是“持续交付”及“持续交付”的实践。 云原生是当下IT圈非常热门的一个词,其目的是为了各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生包含很多技术,比如容器、微服务、DevOps、持续交付等,今天,我们来了解下什么是“持续交付”及“持续交

一文搞懂RESTful开发

REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描述形式 http://localhost/user/getById?id=1 查询id为1的用户信息 http://l

Go-Zero微服务快速入门和最佳实践(一)

前言 并发编程和分布式微服务是我们Gopher升职加薪的关键。 毕竟Go基础很容易搞定,不管你是否有编程经验,都可以比较快速的入门Go语言进行简单项目的开发。 虽说好上手,但是想和别人拉开差距,提高自己的竞争力,搞懂分布式微服务和并发编程还是灰常重要的,这也是我今年更新文章的重点。 更文计划 我会更

Springboot tomcat.threads线程数学习

Springboot tomcat.threads线程数学习 摘要 压测完nginx 突然想搞一下springboot内嵌的tomcat的 threads的参数 一不做二不休, 直接就着脚本进行学习和验证 修改参数 产品里面默认参数值是 500 我这边改大一下 tomcat threads: max

原创->CommonsCollections1-DefaultMap链

今天我打算整点儿不一样的内容,通过之前学习的TransformerMap和LazyMap链,想搞点不一样的,所以我关注了另外一条链DefaultedMap链,主要调用链为: 调用链详细描述: ObjectInputStream.readObject() DefaultedMap.readObject

无需学习Python,一个公式搞定领导想看的大屏

> 摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 **不要让“做不了”成为数字化转型的障碍** 随着数字化的脚步加快,越来越多的企业开始注重数

wxdown 公众号离线文章保存(GO语言开发)

简介 本来一开始用 nodejs 写的,考虑大小、易操作、高性能、跨平台以及环境等问题,我就想能不能搞个不需依赖开发语言环境就能运行的。所以我就选择 go并且它本身就具备以上优点。作者本身是java开发,第一次使用 go所以过程也是比较艰难,好在 GPT 在学习一门新的开发语言方面还是相当给力!

记一次线上问题 → Deadlock 的分析与优化

开心一刻 今天女朋友很生气 女朋友:我发现你们男的,都挺单纯的 我:这话怎么说 女朋友:脑袋里就只想三件事,搞钱,跟谁喝点,还有这娘们真好看 我:你错了,其实我们男人吧,每天只合计一件事 女朋友:啥事呀? 我:这娘们真好看,得搞钱跟她喝点 问题复现 需求背景 MySQL8.0.30 ,隔离级别是默认

如何找到并快速上手一个开源项目

以前有写过两篇文章来简单聊过如何做开源的事情,最近我自己组了一个社区里面也有不少朋友对开源感兴趣,于是我便根据自己的经验系统的梳理了一些关于开源的事情。 新手如何快速参与开源项目 手把手教你为开源项目贡献代码 有兴趣的可以先看看之前这两篇。 如何找到自己感兴趣的开源项目 首先第一步先想清楚自己搞

Keil一键添加.c文件和头文件路径脚本--可遍历添加整个文件夹

最近想移植个LVGL玩玩,发现文件实在是太多了,加的手疼都没搞完,实在不想搞了就去找脚本和工具,基本没找到一个。。。。。。 主要是自己也懒得去研究写脚本,偶然搜到了一个博主写的脚本,原博客地址:https://blog.csdn.net/riyue2044/article/details/13942