如何遵循PEP-440规范为Python功能分支预发布包正确命名?
符合PEP-440的功能分支预发布包版本命名方案
PEP-440 规范内置了对自定义标识的兼容能力,完全可以满足多分支并行构建预发布包、无版本冲突、工具链兼容的需求,核心方案如下:
核心依据
PEP-440 允许在标准版本号后追加 本地版本标识,格式为:[标准版本号]+[自定义标识]
本地标识支持字母、数字、点号、连字符,可自由携带分支名、构建ID、Commit哈希等信息,twine、pip、私有PyPI服务均完全兼容该格式,不会出现上传或识别失败的问题。
推荐命名规则
开发中功能分支用dev前缀格式
以即将发布的正式版本号为基础,搭配dev标识、分支信息、唯一标识即可:
<下一个待发布版本号>.dev<CI构建序号>+<分支名缩写>.<Commit短哈希>
示例:下一个待发布版本为1.2.3,my-feature分支的第5次构建,对应Commit哈希为a1b2c3d,版本号写为:1.2.3.dev5+my.feature.a1b2c3d
该方案的优势:
- 版本优先级低于正式版
1.2.3,用户安装正式版时会自动覆盖预发布包,不会出现版本错乱 - 本地标识中的构建序号+Commit哈希双重保障,完全避免多分支并行构建的版本号冲突
- 明确标识出所属分支和对应代码版本,便于测试溯源
待集成验证分支用预发布前缀格式
如果功能分支已开发完成,进入集成前的最终测试阶段,可以改用alpha/beta/rc前缀:
<下一个待发布版本号><预发布阶段标识><序号>+<分支名缩写>
示例:1.2.3a1+my.feature(a对应alpha阶段)、1.2.3rc2+bug.fix(rc对应发布候选阶段)
使用注意事项
- 安装预发布包时需要给pip加上
--pre参数,示例:pip install --pre <包名>==1.2.3.dev5+my.feature.a1b2c3d - 该方案仅适用于私有PyPI存储内部测试包,正式对外发布版本时请删除
+后的所有本地标识内容,符合公开发布版本的规范 - 如果不需要追溯构建序号,也可以直接省略dev后的序号,仅保留Commit哈希作为唯一标识,格式为
1.2.3.dev+my.feature.a1b2c3d
内容的提问来源于stack exchange,提问作者sh0rtcircuit
相关产品推荐
相关产品推荐

