流水线和分支与环境的关系
目录
Summary
- 介绍分支与流水线的关系,流水线与环境的关系
- 介绍正式环境通过镜像同步方式进行上线前测试的过程
流水线和分支与环境的关系
分支、流水线、环境的关系
-
分支(branch)
: 项目的代码仓库(gitRepo)
可以包含多个分支(branch)
,不同分支(branch)
常常代表应用开发的不同阶段。 -
环境(environment)
: 代表应用的微服务需要部署的基础设施,一个环境(environment)
可以是一个kubernetes集群,也可以包含若干主机(DORY企业版
支持),也可以包含多个数据库(DORY企业版
支持)。 -
流水线(pipeline)
: DORY通过流水线(pipeline)
,从特定分支(branch)
拉取代码,进行构建
➡打包
,并发布到不同环境(environment)
。 -
分支(branch)
、流水线(pipeline)
、环境(environment)
的关系:- 一条
分支(branch)
可以绑定一条流水线(pipeline)
,也可以不绑定任何流水线(pipeline)
。流水线(pipeline)
的名字格式为<projectName>-<branchName>
,例如: demo-shop-develop。 - 一条
流水线(pipeline)
可以发布到多个环境(environment)
,例如正式环境有两个用于容灾的kubernetes集群,那么流水线(pipeline)
可以按照串行的顺序分别发布到这两个kubernetes集群。
- 一条
分支(branch)
、流水线(pipeline)
、环境(environment)
的关系例子如上图,各个分支、环境的用途如下:
develop
分支用于开发调试用途,当应用开发者修改develop
分支的代码,触发demo-shop-develop
流水线,将会把应用发布到test-env
测试环境,应用开发者可以在test-env
测试环境进行开发调试。master
分支用于联调测试用途,当应用开发者修改master
分支的代码,触发demo-shop-master
流水线,将会把应用发布到uat-env
验收测试环境,测试人员可以在uat-env
验收测试环境进行用户验收测试或者上线前测试。release
分支用于生产上线用途,当应用开发者修改release
分支的代码,触发demo-shop-release
流水线,将会把应用发布到prod1-env
和prod2-env
两个正式环境,普通用户在prod1-env
和prod2-env
两个正式环境上可以访问到正式发布的应用。
正式环境通过镜像同步方式进行上线前测试
-
环境的类型:
集成环境
: 常常是指各类用于测试用途的环境,在这些环境上进行测试不会影响普通用户访问正式发布的应用。正式环境
: 是指普通用户可以访问到应用的环境,通常也叫生产环境,正式环境的应用发布会影响用户使用体验,因此应用上线前必须做严格的上线前测试
。
-
在应用正式上线到
正式环境
前,通常需要先在一个集成环境
进行上线前测试
,而且必须保证集成环境
里边所有微服务的版本必须与正式环境
发布后的微服务版本完全一致,才能保证上线前测试
的可靠性。因此DORY引入了镜像同步
方式实现上线前测试
,下图演示应用正式上线前的镜像同步
上线测试过程
- 应用总共有三个
发布模块
,module1
、module2
、module3
,其中本次升级需要升级module3
,并且升级的版本为v1.2
- 上线前需要先在
uat-env
环境进行上线前测试
,然后再发布到prod-env
正式环境。假如在执行流水线前uat-env
环境三个模块的版本为module1-v1.1
、module2-v1.1
、module3-v1.1
;prod-env
环境三个模块的版本为module1-v1.0
、module2-v1.0
、module3-v1.0
uat-env
环境的module1-v1.1
、module2-v1.1
虽然不需要进行发布,但是因为跟prod-env
环境的module1-v1.0
、module2-v1.0
不一致,因此,uat-env
环境的module1-v1.1
、module2-v1.1
需要从prod-env
环境同步为module1-v1.0
、module2-v1.0
module3-v1.2
需要进行正式上线,uat-env
环境的module2-v1.1
会更新为module2-v1.2
,此时uat-env
环境的所有微服务都会跟prod-env
环境将要发布的版本完全一致,那么在uat-env
环境就可以开始进行上线前测试
uat-env
环境完成上线前测试
没有问题后,prod-env
环境的module3-v1.0
就正式升级为module3-v1.2
,完成整个正式环境的上线过程
技巧
镜像同步
是正式环境上线前一个建议开启的选项,用户也可以在流水线中屏蔽镜像同步
功能- 如果你的应用在正式上线前确实不需要进行测试,那么可以不用设置
正式环境