持续交付二:为什么需要多个环境

关于开发测试生产需要多少个环境,因公司而异,这里分享一下我建议开发过程中使用的几个环境。

Development环境,就是开发环境,程序写代码,写单元测试的环境,一般和IDE一起,经常是在调试模式下进行,为了与其他开发者隔离,通常数据库都是自建(也有共享的)自用,三方接口一般都是mock的或调用三方接口的测试环境,尽量减少其他开发人员的干扰,从而高效的调试代码,验证模块。

QA(Quality Assurance)环境,对于多模块,耦合性强的项目,需要把这些功能集成起来联合测试,这时,就需要给测试人员提供一个集中验证的平台,这就是QA环境了。

Staging环境,测试完了不能直接上线,因为数据的差异也可能带来程序的不正常,所以这时有个Stging(预生产)环境,来验证一下生产的数据配置情况下是否有问题。

Production环境,用户使用的环境,数据封闭,提高安全性;环境封闭,降低事故率。

关于四个环境的版本发布情况,程序有三个远程分支,分别是master,staging,development三个分支,staging和development都是从master拉出来的分支。

首先development是开发人员开发完一个功能,或修复完一个bug后,就会推送到远端的development,远端development会构建到QA环境上,以供测试人员去测试。

每个对应功能或bug测试后,开发人员会把它推送到staging分支上,由测试人员完成验收;

staging验收确认后,源码管理人员在git服务端review staging上代码以后,就会合并到master上,以供上线。

这只是我们使用的一种方式,主要根据我们的项目模块之间耦合性强,DevOpt资源,而设计的一种方案,仅供参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux显示内存状态,Linux显示内存状态

Linux显示内存状态youhaidongyouhaidong-ThinkPad-Edge-E545:~$ freetotal used free shared buffers cachedMem: 3103064 1417636 1685428 6672 109496 572168-/ buffers/cache: 735972 2367092Swap: 3998716 0 3998716Linux显示内存统计最大和最小的详情Linux显示内存统计最大…

git revert 后再次merge_git如何回滚错误合并的分支

导读:分类:技术干货题目:git如何回滚错误合并的分支合并到线上分支出现问题的修复方式。场景线上分支:master你开发的分支:dev1同时开发的分支:dev2dev1分支开发的代码已经上线,并且已经merge到…

部署Dotnet Core应用到Kubernetes(二)

前一篇文章,概念性地介绍了K8s的一些基础组件,如Pod、部署和服务。这篇文章,我打算写写如何使用YAML清单定义和配置这些资源。实际上,在K8s集群中创建对象有几种方式 - 命令,或声明。两种方式区别不大。不过实际应用中…

linux+c+逐行读文件内容,使用C ++中的ifstream逐行读取文件

在C 中逐行读取文件可以通过某些不同的方式完成。[快]循环使用std :: getline()最简单的方法是使用std :: getline()调用打开std :: ifstream和循环。 代码简洁易懂。#include std::ifstream file(FILENAME);if (file.is_open()) {std::string line;while (getline(file, line)…

如何区分netty是udp还是tcp_鲜奶粉还是大包粉,到底该如何区分?

100%的宝爸宝妈们都希望为宝宝挑选最营养、最新鲜的口粮,也相信让娃爸每周逛遍各大超市,只为了选两罐最新日期的奶粉,这种事情一定不止一个人做过!一直以来,人们对于“新鲜”有着亘古不变的追求。尤其是对待生活中的“…

Winform 进度条弹窗和任务控制

Winform 进度条弹窗和任务控制目录Winform 进度条弹窗和任务控制一、弹窗前台二、弹窗后台三、使用方法四、效果展示和代码地址独立观察员 2020 年 11 月 17 日最近要给一个 Winform 项目添加功能,需要一个能显示进度条的弹窗,还要求能够中止任务&#x…

linux下rip服务启动失败,RIP协议_linux系统管理与服务的技术博客_51CTO博客

理解并配置动态路由协议RIPRIP(Routing Information Protocol)是应用较早、使用较普遍的内部网关协议(Interior Gateway Protocol,IGP),适用于小型网络,是典型的距离矢量(Distance-Vector)路由协议,是一种单纯的向邻居路由器发送自…

c语言prime函数怎么用_C语言 要发就发

点击上方“蓝字”关注我们愉快的一天,不得不做的三件事:种田,锄地,整代码!!!【题目】“1898——要发就发”。请将不超过1993的所有素数从小到大排成第一行,第二行上的每个数都等于它…

linux如何使用vnc远程登录,如何使用Xmanager及VNC登录远程桌面

如何调用远程桌面,比较常见的有两种方式:Xmanager及VNC正好今天鼓捣了一下,特整理如下:XmanagerXmanager的调用也有两种方式:一、直接在Xshell中调用这时需设置会话属性,如下图所示,需在“隧道”…

python自然语言处理_python

chinese-xinhua/ | - data/ 汉字例子: { "word": "吖", "oldword": "吖", "strokes": "6", "pinyin": "ā", "radicals": "口", "explanation": &…

别在.NET死忠粉面前黑.NET5,它未来可期!

期盼已久的.NET5,终于在11月11日正式发布,整个.NET社区都为之沸腾,知乎、博客园、QQ群、微信群,随处可见.NET5 的热议,作为.NET死忠粉,我也挺兴奋的。然而一片欢歌笑语中总有一些很不和谐的声音&#xff0c…

linux系统 个人使用情况,个人使用Linux操作系统常要做的事

也算是装过多个Linux发行版了,无论是虚拟机还是实际的电脑。虽然大多是装了之后很初浅玩玩——只是在本地操作一些文件和目录,而且可以使用的软件工具也是有限的,甚至没有网络(你可以想象一下都能做些什么了)。这尤其对我这样的菜鸟来说使用起…

c#物联网_C# 基础知识系列- 16 开发工具篇

0. 前言 这是C# 基础知识系列的最后一个内容讲解篇,下一篇是基础知识-实战篇。这一篇主要讲解一下C#程序的结构和主要编程工具。 1. 工具 工欲善其事必先利其器,在实际动手之前我们先来看看想要编写一套C#程序需要做哪些准备吧。 1.1 选择 C# 的sdk在之前…

接口幂等设计探索实践

幂等性原本是数学上的概念,即使公式:f(x)f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的、或者说是符合预期的。背景稳定性设计第一…

linux 用mutex定义一个linkedlist,一个高性能无锁非阻塞链表队列

这个是一个用c 11标准实现的无锁非阻塞链表队列,通过增加一个dummy节点,解偶合链表头指针和尾指针。使得当只有一个生产者和一个消费者时,进队和出队都无需加锁,进队操作的是尾指针,出队操作的是头指针,互不…

Windows 7 安装 .NET 5 / .NET Core 3.1 环境的方法和依赖文件

随着 .NET 5 正式版的发布,越来越多的人开始向 .NET 5 、.NET Core 平台迁移。尽管微软已经在 2020 年 1 月 14 日停止了对 Windows 7 的支持,但仍有大批客户的操作系统对 Windows 7 恋恋不舍。为此,我们需要解决 .NET 5 运行时(R…

easyui 动态设置单元格控件_动态显示最大最小值的折线图

小伙伴们好啊,今天和大家分享一个图表有关的知识。折线图想必大家已经司空见惯,今天就要在简单的折线上,做出不简单的效果。用动态折线图,展示一周销售的变化,并且自动突出最大最小值。1、准备数据源以某家水果店1月份…

WebBenchmark动态测试Webapi

在编写Webapi测试用例的时候都是定义固定的测试数据,但这样的测试只能针对单一数据。为了更好的模拟实际情况,往往需要进行动态数据测试;通过动态数据测试可以更好的测出服务在不同数据情况下的处理能力。WebBenchmark支持动态数据函数&#…

linux开发需要学习什么,linux开发需要掌握哪些知识?

原标题:linux开发需要掌握哪些知识?嵌入式linux开发的应用是非常广泛的。而且linux是开源的,各种技术也是非常成熟的。不过很多初学者在学习linux开发过程中感觉非常难,那么对于linux开发需要掌握哪些知识呢?1.Linux是…

csv 字符串_python3从零学习-5.5.1、CSV 文件读写

源代码: Lib/csv.py模块内容csv 模块定义了以下函数:csv.reader(csvfile, dialectexcel, **fmtparams)返回一个 reader 对象,该对象将逐行遍历 csvfile。csvfile 可以是任何对象,只要这个对象支持 iterator 协议并在每次调用 __ne…