目录

流水线和分支与环境的关系

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集群。

/docs/images/branch-pipeline-env.png

  • 分支(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-envprod2-env两个正式环境,普通用户在prod1-envprod2-env两个正式环境上可以访问到正式发布的应用。

正式环境通过镜像同步方式进行上线前测试

  • 环境的类型:

    • 集成环境: 常常是指各类用于测试用途的环境,在这些环境上进行测试不会影响普通用户访问正式发布的应用。
    • 正式环境: 是指普通用户可以访问到应用的环境,通常也叫生产环境,正式环境的应用发布会影响用户使用体验,因此应用上线前必须做严格的上线前测试
  • 在应用正式上线到正式环境前,通常需要先在一个集成环境进行上线前测试,而且必须保证集成环境里边所有微服务的版本必须与正式环境发布后的微服务版本完全一致,才能保证上线前测试的可靠性。因此DORY引入了镜像同步方式实现上线前测试,下图演示应用正式上线前的镜像同步上线测试过程

/docs/images/production-env-sync-image.png

  • 应用总共有三个发布模块module1module2module3,其中本次升级需要升级module3,并且升级的版本为v1.2
  • 上线前需要先在uat-env环境进行上线前测试,然后再发布到prod-env正式环境。假如在执行流水线前uat-env环境三个模块的版本为module1-v1.1module2-v1.1module3-v1.1prod-env环境三个模块的版本为module1-v1.0module2-v1.0module3-v1.0
  • uat-env环境的module1-v1.1module2-v1.1虽然不需要进行发布,但是因为跟prod-env环境的module1-v1.0module2-v1.0不一致,因此,uat-env环境的module1-v1.1module2-v1.1需要从prod-env环境同步为module1-v1.0module2-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,完成整个正式环境的上线过程
技巧
  • 镜像同步是正式环境上线前一个建议开启的选项,用户也可以在流水线中屏蔽镜像同步功能
  • 如果你的应用在正式上线前确实不需要进行测试,那么可以不用设置正式环境