本文主要是介绍下开发流程,以及要解决的问题
问题
项目中遇到的问题如下:
- 自动化构建的时机
- 项目独立构建,独立更新
- 项目产物如何存储
- 项目版本如何划分
项目版本
在大型项目中,拆分的项目会非常多,我实践的项目会有20+,参与开发的人员会5+。再加上定制化开发等场景,项目数量和人员数量会快速增加,为了让开发人员能够快速定位到要开发的功能,项目的版本管理就至关重要。
版本格式
我参考的是npm的语意化版本规范
| 场景 | 稳定版本 | 目标版本 | 开发版本 |
|---|---|---|---|
| 新业务迭代开发 | v1.0.0 | v1.1.0 | v1.1.0-x |
| hotfix | v1.0.0 | v1.0.1 | v1.0.1-x |
| 临时演示 | v1.0.0 | v1.0.0-dz.x | v1.0.0-dz.x |
稳定版本:已经发布的版本
目标版本:下一个要发布的版本
开发版本:正在开发、测试的版本
开发过程中,开发人员通过使用npm version xxx来进行版本升级,通过 npm 的 preversion hook 进行版本校验提示。preversion hook
package.json
{
scripts:{
"preversion": "preversion.js",
}
}
自动化流程
开发版本升级,存储
sequenceDiagram
开发者->>git仓库: npm version xxx
git仓库->>git仓库: add tag
git仓库->>jenkins: webhook 通知
jenkins->>jenkins:构建
jenkins->>文件服务器:打包上传构建产物
文件服务器中,是根据项目类型(app、container)+ 版本号进行分类的
本地同步所有项目最新版本
sequenceDiagram
开发者->>下载脚本: 执行
下载脚本->>版本配置文件: 读取
版本配置文件-->>下载脚本: 返回版本信息
下载脚本->>文件服务器: 下载对应项目类型的版本打包文件
文件服务器-->>下载脚本: 返回下载文件流
下载脚本-->>开发者: 成功下载
版本配置文件
{
"type": "project",
"container": {
"name": "container",
"version": "v1.0.0"
},
"apps": [
{
"name": "foundation",
"packageName": "a-foundation",
"version": "v1.9.0"
},
{
"name": "login",
"version": "v1.2.2"
}
]
}
下载文件版本匹配规则
配置文件中会指定前三位版本,下载时会匹配代码版本
| 配置文件版本 | 文件服务器版本list | 下载版本 |
|---|---|---|
| v1.0.0 | v1.0.0-0,v1.0.0-1 | v1.0.0-1 |
| v1.0.0 | v1.0.0-0,v1.0.0-1,v1.0.0 | v1.0.0 |
| v1.0.0 | v1.0.0-0,v1.0.0-1,v1.0.0,v1.1.0 | v1.0.0 |
| v1.0.0 | v1.0.0-0,v1.0.0-1,v1.0.0,v2.0.0 | v1.0.0 |
相关的代码需要结合具体场景来实现,具体情况具体分析