public/技术规范/佛山许可登记代码与版本发布管理规范.md

171 lines
8.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 佛山许可登记代码与版本发布管理规范
> <div><span>拟稿:研发中心</span></div>
> <div><span>版本号1.1 </span></div>
> <div><span>发布时间2022.09.15 </span></div>
**目录**
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [一、 代码管理](#%E4%B8%80-%E4%BB%A3%E7%A0%81%E7%AE%A1%E7%90%86)
- [代码仓库组织](#%E4%BB%A3%E7%A0%81%E4%BB%93%E5%BA%93%E7%BB%84%E7%BB%87)
- [分支简介](#%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B)
- [分支管理](#%E5%88%86%E6%94%AF%E7%AE%A1%E7%90%86)
- [跨工程分支管理](#%E8%B7%A8%E5%B7%A5%E7%A8%8B%E5%88%86%E6%94%AF%E7%AE%A1%E7%90%86)
- [分支负责人职责](#%E5%88%86%E6%94%AF%E8%B4%9F%E8%B4%A3%E4%BA%BA%E8%81%8C%E8%B4%A3)
- [开发人员管理](#%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E7%AE%A1%E7%90%86)
- [二、 版本发布管理](#%E4%BA%8C-%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83%E7%AE%A1%E7%90%86)
- [版本发布工具](#%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83%E5%B7%A5%E5%85%B7)
- [版本发布时间](#%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83%E6%97%B6%E9%97%B4)
- [发布流程管理](#%E5%8F%91%E5%B8%83%E6%B5%81%E7%A8%8B%E7%AE%A1%E7%90%86)
- [升级负责人职责](#%E5%8D%87%E7%BA%A7%E8%B4%9F%E8%B4%A3%E4%BA%BA%E8%81%8C%E8%B4%A3)
- [开发人员管理](#%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E7%AE%A1%E7%90%86-1)
- [三、 代码分支与版本发布流程图](#%E4%B8%89-%E4%BB%A3%E7%A0%81%E5%88%86%E6%94%AF%E4%B8%8E%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83%E6%B5%81%E7%A8%8B%E5%9B%BE)
- [四、 常见问题](#%E5%9B%9B-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## 一、 代码管理
### 代码仓库组织
建立Git组织团队名为`fsrl`,专门托管佛山许可登记系统的项目代码,并把开发人员权限统一管理起来。
**组织地址:** http://47.107.61.133:3000/fsrl
**仓库列表**
| 工程名 | 主题 |
| ----------------- | ---------------- |
| fsrl-org | 系统组织架构系统 |
| fsrl-scr | 商事登记2.0 |
| fsrl-server | 许可登记大后台 |
| fsrl-approve | 许可登记大前端 |
| fsrl-biz-speq-web | 质监网办PC前端 |
### 分支简介
工程的分支主要两种,一种是长期分支,一种是功能开发的主题分支。其中`master`,`test`是长期分支。
**master分支**
master分支始终代表生产环境的状态不能直接在上面提交代码。并大版本的发布应该进行打标签Tag存储正式发布的历史。
**test分支**
test 分支作为功能的预发布集成分支包含所有的代码提交记录。test分支代表针对下一版本的最新交付的代码。在合并了其他功能分支的情况下使用 test分支的代码进行测试然后与 master 分支合并。
**开发分支**
根据系统功能需求划分,创建对应的开发分支,负责存储相应的开发功能代码。开发人员从 master分支创建新分支并开发新功能。功能开发完毕后将对其进行测试与 test分支合并。
### 分支管理
1. master分支上保留完全稳定的代码不允许直接push代码
2. master分支只能从test分支合并push
3. 开发分支创建基于master拉取创建并且命名采用英文定义
4. 开发分支删除,当功能正式上线稳定一定的周期,并取得项目经理允许,即可删除分支。
5. 工程代码与分支需要严格规范管理起来,划分清楚工程与分支的边界
6. 设立开发分支代码管理负责人,负责日常合并、与其他开发模块代码协同等操作
### 跨工程分支管理
所谓的跨工程分支,意义上是同一个事项或功能开发,并涉及多个工程的分支管理。
1. 同属一个功能开发,要统一相同的分支命名
2. 分支拥有一致生命周期
例如:
| 功能模块 | 涉及工程 | 分支名称 |
| -------- | ----------------------------------------------------------- | -------- |
| 正式环境 | `fsrl-scr`,`fsrl-server`,`fsrl-approve`,`fsrl-biz-speq-web` | master |
| 测试环境 | `fsrl-scr`,`fsrl-server`,`fsrl-approve`,`fsrl-biz-speq-web` | test |
| 一照通行 | `fsrl-scr`,`fsrl-server`,`fsrl-approve` | zzt |
| 食药许可 | `fsrl-scr`,`fsrl-server`,`fsrl-approve` | food_med |
| 质监许可 | `fsrl-scr`,`fsrl-server`,`fsrl-approve`,`fsrl-biz-speq-web` | speq |
### 分支负责人职责
1. 每天负责合并master主线代码到开发分支上
2. 上线发版需要经过测试环境测试主动把代码合并test分支上
3. 发版需要告知升级负责人,本次升级涉及那些工程以及说明,要通过文本方式告知留底
### 开发人员管理
1. 编写代码时,要在正确的分支下开发,特别是负责多个模块开发人员,禁止代码串门提交不相关分支
2. 每天来了先拉取同步远程仓库的代码并在下班或定期提交代码到Git仓库禁止攒着代码放大招
3. 禁止个人独立创建开发分支,要经过负责人同意
5. 开发规范可参考: [技术规范](http://47.107.61.133:3000/chinaweal/public/src/branch/master/技术规范)
## 二、 版本发布管理
### 版本发布工具
版本系统主要功能有,升级补丁,退回版本,补丁文件防篡检验。改生产环境发布版本,需要通过版本管理系统工具发布,禁止私自手动拷贝替换操作。
**版本打包服务器**172.22.80.91:22
**控制端访问地址**http://172.22.80.91:8086/incre/web#/login
**佛山客户端访问地址**http://19.130.241.146:9888/incre/web#/client/project
**顺德客户端访问地址**http://19.202.179.137:9888/incre/web#/client/project
### 版本发布时间
系统升级要按照制定的时间执行,各模块的负责人要提前把代码功能测试好并提交,并告知升级负责人。逾期得等到下次升级,紧急情况下,可以向项目经理申请,通过方可以执行升级。
| 环境 | 升级时间 |
| -------- | ---------------- |
| 生产环境 | 周四19点 |
| 测试环境 | 获得准许即可升级 |
### 发布流程管理
1. 每次发布版本要经过测试环境验证流程测试环境test > 正式环境master
2. 分支合并由分支负责人合并到test测试环境测试没有问题再由升级负责人合并到主线master上打包发布正式环境
3. 测试环境发布版本,可以由分支负责人来负责打包升级
4. 生产环境发布版本,由升级负责人打包升级,并且只能使用版本打包服务器打包
5. 生产环境升级与回退只能使用版本管理系统操作
### 升级负责人职责
1. 合并分支test至master主线
2. 生产环境版本系统发布升级
3. 系统回退版本的操作
### 开发人员管理
1. 每次升级的代码,编写开发人员,需要保持在线状态
2. 修改了工程的静态配置文件,需告知分支负责人
3. 变更了库表字段,需告知分支负责人收集转交给数据库负责人
## 三、 代码分支与版本发布流程图
<img src="../img/佛山许可登记代码与版本发布管理规范.png" style="width:100%"/>
## 四、 常见情况
1. 同一时间段多个功能要同时上线,涉及多个开发分支如何解决?
按照顺序一个开发分支合并到test分支测试通过。再接合并下一个开发分支。直至完毕再正式发版。建议业务上避免多功能上线。
2. 存在当两个开发分支之间存在公用或基本是实现一样的功能的代码时?
答:应进行梳理应从需求角度划分功能分支,判断分支是否存在歧义。
3. 开发过程中发现其他成员在不当地方编写业务功能?
答:叫上业务佬和技术佬,从两个角度进行评估。
4. 发现有其他成员,存在操作不规范?
答:要及时制止,进行沟通。有必要则反馈上报。