基于分支的版本号管理方案
团队公告
1
帖子
1
发布者
16
浏览
1
关注中
-
基于分支的版本号管理方案
概述
NuGet 组件的版本号管理现在根据分支自动选择不同的环境配置文件,实现开发和生产环境的版本号隔离。
分支与环境映射
分支类型 环境标识符 说明 master/mainproduction生产环境版本号 develop/nextdevelopment开发环境版本号 feature/*/bugfix/*/fix/*development功能开发分支,使用开发环境版本号 hotfix/*production紧急修复分支,使用生产环境版本号 其他分支 development默认使用开发环境版本号 URL 结构
下载 Directory.Build.props
${SHARED_VERSION_BASE_URL}/${PRODUCT_NAME}/${ENVIRONMENT}/urls.txt示例:
- 生产环境:
https://version.lodatone.com/StoreManage/production/urls.txt - 开发环境:
https://version.lodatone.com/StoreManage/development/urls.txt
更新版本号 API
${SHARED_VERSION_BASE_URL}/updateversion/${PRODUCT_NAME}/${COMPONENT_NAME}/${VERSION_ID}/${ENVIRONMENT}示例:
- 生产环境:
https://version.lodatone.com/updateversion/StoreManage/Loda.Abp.StoreManage.Basic/2855.2026.103.58596/production - 开发环境:
https://version.lodatone.com/updateversion/StoreManage/Loda.Abp.StoreManage.Basic/2855.2026.103.58596/development
工作流程
开发分支推送
- 开发者在
feature/TG-1423-discount-bug分支提交代码 - CI 自动判断分支类型 →
development - 下载开发环境的
Directory.Build.props - 构建并推送 NuGet 包
- 更新开发环境的版本号
- 其他开发分支下次构建时自动使用新版本号
生产分支推送
- 代码合并到
master分支 - CI 自动判断分支类型 →
production - 下载生产环境的
Directory.Build.props - 构建并推送 NuGet 包
- 更新生产环境的版本号
- 生产环境的其他项目使用新版本号
服务端配置
目录结构
wwwroot/ ├── StoreManage/ │ ├── production/ │ │ ├── Directory.Build.props │ │ ├── urls.txt │ │ └── version-numbers/*.props │ └── development/ │ ├── Directory.Build.props │ ├── urls.txt │ └── version-numbers/*.propsAPI 端点
控制器需要支持新的路由格式:
[HttpGet] [Route("{product}/{module}/{version}/{environment}")] public IActionResult UpdateVersion(string product, string module, string version, string environment)优势
- 环境隔离:开发和生产环境的版本号互不干扰
- 自动化:根据分支自动选择环境,无需手动配置
- 灵活性:支持多种分支命名规范
- 向后兼容:保持对旧版本 API 的兼容
- 生产环境: