helm/helm · error
version %w
Error message
version %w
What it means
Lint rule applying the semver constraint ">0.0.0-0" to the parsed version: the chart version must be strictly greater than the smallest possible 0.0.0 prerelease. If not, the first constraint-validation error message (an error value) is wrapped with %w. Practically only `version: 0.0.0` (or an equivalent-zero) fails, since anything positive passes.
Source
Thrown at pkg/chart/v2/lint/rules/chartfile.go:156
func validateChartVersion(cf *chart.Metadata) error {
if cf.Version == "" {
return errors.New("version is required")
}
version, err := semver.NewVersion(cf.Version)
if err != nil {
return fmt.Errorf("version '%s' is not a valid SemVer", cf.Version)
}
c, err := semver.NewConstraint(">0.0.0-0")
if err != nil {
return err
}
valid, msg := c.Validate(version)
if !valid && len(msg) > 0 {
return fmt.Errorf("version %w", msg[0])
}
return nil
}
func validateChartVersionStrictSemVerV2(cf *chart.Metadata) error {
_, err := semver.StrictNewVersion(cf.Version)
if err != nil {
return fmt.Errorf("version '%s' is not a valid SemVerV2", cf.Version)
}
return nil
}
func validateChartMaintainer(cf *chart.Metadata) error {
for _, maintainer := range cf.Maintainers {
switch {
case maintainer == nil:View on GitHub (pinned to 2a29f1770b)
Solutions
- Bump the version to at least 0.0.1 (or 0.1.0) before linting/publishing.
- Fix CI tag detection so 0.0.0 is never the fallback.
- Treat 0.0.0 as 'unreleased' and skip `helm package`/upload steps until bumped.
Example fix
# before apiVersion: v2 name: mychart version: "0.0.0" # -> version 0.0.0 is less than or equal to 0.0.0-0 # after apiVersion: v2 name: mychart version: "0.0.1"
Defensive patterns
Strategy: validation
Validate before calling
// Reject placeholder zero versions before lint/publish
v, err := semver.NewVersion(md.Version)
if err != nil { return err }
c, _ := semver.NewConstraint(">0.0.0-0")
if ok, _ := c.Validate(v); !ok {
return fmt.Errorf("chart version %s must be > 0.0.0", md.Version)
} Prevention
- Never publish with version 0.0.0; treat it as 'not yet released'.
- Let CI bump from the git tag rather than defaulting to zero.
When it happens
Trigger: `version: "0.0.0"` in Chart.yaml — semver reports it does not satisfy >0.0.0-0. Scaffolding placeholders left un-bumped hit exactly this.
Common situations: A chart created with a placeholder zero version that was never set before publishing; automated pipelines defaulting to 0.0.0 when the tag detection fails.
Related errors
- version is required
- version '%s' is not a valid SemVer
- version '%s' is not a valid SemVerV2
- should be a file, not a directory
- name is required
AI-assisted analysis of helm/helm@2a29f1770b (2026-08-15).
Data as JSON: /api/errors/5828c7cf0dd895ed.
Report an issue: GitHub.