关于Helm 3包版本格式要求及helm package命令版本参数无效语义版本错误的咨询
Helm 3 包版本格式要求及常见错误解析
刚好对Helm的版本规范门儿清,来给你把这个问题说透~
Helm 3对包版本的要求非常明确——严格遵循Semantic Versioning 2.0.0(语义化版本2.0)规范,这也是你执行helm package ... --version <some_version>时碰到Error: Invalid Semantic Version错误的根本原因:输入的版本不符合这套规则。
核心版本结构拆解
SemVer的标准格式分为基础版和扩展版:
基础格式(必填)
主版本号.次版本号.修订号
- 主版本号:当你做了不兼容的API变更时递增(比如从1.x到2.x,Chart的模板结构大幅调整)
- 次版本号:当你新增了向下兼容的功能时递增(比如给Chart加了一个可选的sidecar容器)
- 修订号:当你修复了向下兼容的bug时递增(比如修正了values.yaml里的一个参数默认值错误)
扩展格式(可选)
在基础版本后可以添加预发布版本和版本元数据,格式如下:
主版本号.次版本号.修订号-预发布版本+版本元数据
- 预发布版本:用于标记未正式发布的版本(比如测试版、候选版),由点分隔的标识符组成,只能包含ASCII字母、数字和连字符,不能有前导零(比如
beta.1有效,01.beta无效) - 版本元数据:用于记录构建信息、编译时间等,同样由点分隔的标识符组成,规则和预发布版本一致,且元数据不影响版本优先级(比如
1.2.3+build.123和1.2.3会被视为同一版本)
常见无效版本示例(避坑指南)
你碰到的错误大概率是用了以下不符合规则的版本:
- 非三段式结构:比如
1.2(缺少修订号)、5(只有主版本号) - 带前导零的数字段:比如
1.02.3(次版本号的02有前导零) - 开头带
v前缀:Helm不允许版本号以v开头,比如v1.0.0是无效的 - 用了非法字符:比如
1.2.3-beta_1(下划线不属于允许的字符)、1.2.3/rc1(斜杠非法)
有效版本格式示例
给你列几个完全符合要求的版本,照着用就不会踩坑:
- 基础正式版:
1.0.0 - 预发布测试版:
2.1.3-alpha、3.0.0-rc.2 - 带构建元数据的版本:
1.5.2-beta.1+hotfix.202405、2.0.0+build.456
小提醒
如果你的Chart.yaml文件里已经指定了version字段,执行helm package时用--version参数会覆盖这个值,但不管是在Chart.yaml里定义还是用命令行指定,版本格式都必须符合SemVer规范哦。
内容的提问来源于stack exchange,提问作者User12547645
相关产品推荐
相关产品推荐

