跳转至

版本管理规范

前言

本文档以知学云9其他规范为基础,根据以往经验,主要对版本相关事项进行规范

目标人群

开发工程师

版本号规范

说明

版本号分为**X.Y.Z**三位,分别代表主版本号、次版本号和修订版本号

按需升级:

按需升级流程

规范

  • 【强制】业务上技术上大的变动规划,更新**X**位,升级周期0.5-2年

  • 【强制】新功能开发,版本迭代,需要更新**Y**位,升级周期2-3个月

  • 【强制】小功能或bug修复,更新修订版本**Z**位,升级周期不固定

  • 【强制】hotfix版本不进行升级

代码分支规范

说明

分支对应关系如下:

develop:开发环境

release:测试环境

master:预发布环境,正式环境

规范

  • 【强制】每个工程需要有develop,release,master三个分支,并且为protected权限
  • 【强制】develop,release分支版本后缀加上-SNAPSHOT,master分支直接 为版本号
  • 【强制】开发提交代码合并,先提交到自己的分支,然后提交merge request到对应分支,由开发组长审
  • 【强制】每个后端merge request不允许有sonarqube错误,前端不允许有eslint错误,若有则close并重新修改提交
  • 【强制】release合并master前,需要备份master,后缀跟"-旧版本号",protected权限

模块依赖规范

说明

project工程用来管理所有jar包版本管理

a) 外部jar包引入

b) 内部工程类jar包

c) 内部工具类jar包

引入新jar包步骤:project添加dependencyManagement管理->升级project版本号->需升级工程升级project版本->定期升级所有project版本

升级内部工程步骤:升级project中common版本号->升级project版本号->需升级工程升级project版本->定期升级所有project版本

工程类

project api-parent async-service-parent service-parent web-server-parent common-dao common-base
parent:spring-boot-starter-parent
dependencyManagement
common-base
common-dao
common-restful-support
common-distributed
common-encrypt
common-message
common-rpc
common-cache
common-office
api-parent
web-server-parent
service-parent
async-service-parent
curator-recipes
kryo
kryo-serializers
zkclient
flexjson
dubbo
fastjson
fastdfs-client-java
metrics-jvm
guava
poi
poi-ooxml
parent:project
common-base
jooq
parent:project
common-base
common-dao
common-encrypt
common-message
common-rpc
common-cache
mysql-connector-java
spring-boot-starter-actuator
spring-boot-starter-data-mongodb
metrics-core
metrics-graphite
metrics-jvm
parent:project
common-base
common-dao
common-distributed
common-encrypt
common-message
common-rpc
common-cache
mysql-connector-java
spring-boot-starter-actuator
jedis
metrics-core
metrics-graphite
metrics-jvm
fastjson
parent:project
common-base
common-message
common-rpc
common-cache
common-encrypt
common-restful-support
spring-boot-starter-actuator
jedis
metrics-core
metrics-graphite
metrics-jvm
fastdfs-client-java
guava
common-office
parent:project
spring-boot-starter-jooq
common-base
javassist
spring-boot-starter-test
h2
parent:project

工具类

common-office common-message common-cache common-restful-support logic-mapping common-rpc jooq-generator common-encrypt common-distributed
parent:project
common-base
spring-core
poi
poi-ooxml
parent:project
common-base
spring-boot-starter-amqp
kryo
parent:project
guava
jedis
kryo
parent:project
common-base
common-cache
common-message
flexjson
spring-boot-starter-web
spring-boot-starter-aop
spring-websocket
fastjson
fastdfs-client-java
commons-pool2
parent:project
spring-context
spring-beans
commons-logging
junit
parent:project
common-base
dubbo
kryo
kryo-serializers
zkclient
parent:project
spring-boot-starter-jooq
mysql-connector-java
jooq-codegen-maven
common-base
parent:project
parent:project
curator-recipes

规范

  • 【强制】业务模块工程,都以project为父工程
  • 【强制】web引入web-server-parent,service引入service-parent,async-service引入async-service-parent
  • 【强制】引入通用型第三方jar包,需要审核将其添加到对应的parent的pom中,不能直接引用
  • 【强制】引入特殊第三方jar包,需要审核后加入到pom文件并引入
  • 【强制】RPC服务端:service仅允许启动类配置RPCServerConfig
  • 【强制】RPC客户端:web-server及async-service仅允许启动类配置RPCClientConfig

发版规范

说明

发版以工程粒度进行发版,pc及后端仅兼容最新版,app需要兼容旧版本

发版以最小影响范围进行发版,按需升级

版本升级模板清单

  • 01功能内容清单-xxx
  • 02升级变更sql-xxx
  • 03环境变量变更清单-xxx
  • 04设备变更清单-xxx
  • 05otter配置清单-xxx
  • 06工程升级清单-xxx
  • 07升级操作清单-xxx
  • 08升级过程记录及总结-xxx
  • 09归档-xxx

规范

  • 【强制】master版本发版须制定升级模板清单,依据升级模板清单进行版本升级
  • 【强制】所有工程按需发版,仅当前模块功能有变动或rpc调用被修改时需发版
  • 【强制】app旧版本兼容请参考《升级兼容规范》
  • 【强制】每次X、Y版本升级,版本文档必须归档