版本管理规范¶
前言¶
本文档以知学云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版本升级,版本文档必须归档