如何通过Bumpversion工具可选生成带dev-{build}后缀的版本?
解决Bumpversion可选生成dev-build版本的问题
问题描述
使用Bumpversion管理应用版本,希望为常规版本可选地添加dev-build后缀,但执行bumpversion dev时出现错误:
ValueError: The part has already the maximum value among ['dev'] and cannot be bumped.
当前配置如下:
[bumpversion] current_version = 1.5.3 parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(-(?P<dev>.*)-(?P<build>\d+))? serialize = {major}.{minor}.{patch}-{dev}-{build} {major}.{minor}.{patch} [bumpversion:part:dev] values = dev [bumpversion:part:build] first_value = 1
错误原因
你给dev部分配置的可选值只有dev一个,执行bumpversion dev时,工具尝试"升级"dev字段,但已经是最大值,因此抛出错误。你的场景是添加/切换dev后缀,而非升级dev字段,所以需要调整配置或操作方式。
解决方案
方案一:调整配置支持dev字段的切换与build自增
修改配置文件bumpversion.cfg:
[bumpversion] current_version = 1.5.3 # 调整正则,让dev字段仅匹配"dev"或为空,同时兼容有无dev-build后缀的版本 parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(-(?P<dev>dev)?-(?P<build>\d+))? serialize = {major}.{minor}.{patch}-{dev}-{build} {major}.{minor}.{patch} [bumpversion:part:dev] values = dev # 添加空值,支持从开发版本切回正式版本 "" [bumpversion:part:build] first_value = 1
对应的操作命令:
- 从正式版本生成首个开发版本:
版本会从bumpversion --set-part dev=dev build1.5.3变为1.5.3-dev-1 - 升级build号:
版本从bumpversion build1.5.3-dev-1变为1.5.3-dev-2 - 切回正式版本:
版本回到bumpversion --set-part dev=""1.5.3
方案二:直接指定新版本快速生成
如果不想修改配置,可直接通过--new-version参数生成开发版本:
bumpversion --new-version 1.5.3-dev-1
后续升级build号时,直接执行bumpversion build即可自动递增build数值。
内容的提问来源于stack exchange,提问作者Hardwired
相关产品推荐
相关产品推荐

