如何用Nerdbank仅在非公共发布分支的beta标签中使用height管理版本?
基于分支策略的无频繁修改版本管理方案
核心思路
通过构建时动态生成版本号,让version.json仅存储纯基础版本号(如1.1),无需在特性分支构建时频繁修改版本文件——版本后缀由当前分支和构建编号自动决定。
具体实现步骤
1. 版本文件配置
version.json只保留基础版本,不包含beta标识:
{ "version": "1.1" }
2. 构建脚本逻辑
在CI/CD构建流程中添加版本生成逻辑,以Shell脚本为例:
# 读取version.json中的基础版本 BASE_VERSION=$(jq -r '.version' version.json) # 获取当前分支名 CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) # 获取构建编号(根据CI工具调整,示例用GitHub Actions变量) BUILD_NUMBER=${{ github.run_number }} # 格式化为4位补零数字(如0001、0002) FORMATTED_BUILD=$(printf "%04d" $BUILD_NUMBER) # 根据分支生成最终版本 if [[ $CURRENT_BRANCH == master || $CURRENT_BRANCH == main ]]; then FINAL_VERSION=$BASE_VERSION else # 匹配特性分支(可根据团队分支规则调整,比如feature/*、bugfix/*) if [[ $CURRENT_BRANCH == feature/* || $CURRENT_BRANCH == bugfix/* ]]; then FINAL_VERSION="${BASE_VERSION}-beta${FORMATTED_BUILD}" fi fi # 将最终版本传入包构建命令(示例:npm 版本设置) npm version $FINAL_VERSION --no-git-tag-version
3. 分支工作流配合
- 启动新特性:创建特性分支(如
feature/payment-module),仅修改一次version.json,将基础版本升级到目标正式版本(比如从1.0改为1.1),提交该修改到特性分支。 - 特性分支构建:每次触发CI构建时,自动生成带beta后缀的版本(如
1.1-beta0001、1.1-beta0002),全程无需修改版本文件。 - 合并到正式分支:特性分支合并到
master/main后,CI检测到正式分支,直接使用version.json中的基础版本生成正式包(如1.1)。
关键细节
- 构建编号需保证在特性分支内递增:不同CI工具的构建编号变量不同,GitLab用
CI_PIPELINE_IID,Jenkins用BUILD_NUMBER,按需替换即可。 - 分支匹配规则可自定义:根据团队分支命名规范调整判断逻辑,确保只有特性分支才生成beta版本。
- 避免版本冲突:特性分支的版本修改仅在启动时做,后续构建不碰
version.json,合并到master时不会出现版本文件冲突。
内容的提问来源于stack exchange,提问作者CeejeeB
相关产品推荐
相关产品推荐

