chart-releaser
chart-releaser copied to clipboard
Portion of `chart.metadata.version` unexpectedly treated as a number
Recreation steps
-
Install the latest chart releaser version:
> cr version GitVersion: v1.6.1 GitCommit: 0102fa30dd78df0d0f8093c4607e6080972ff82d BuildDate: 2023-10-31T07:28:18Z GoVersion: go1.20.10 Compiler: gc Platform: darwin/arm64 License: Apache 2.0 -
Set the helm chart version as follows:
version: 2.18.2-branch.testing.79682.0162870 -
run
cr package -
we receive
Error: validation: chart.metadata.version "2.18.2-branch.testing.79682.0162870" is invalid
Workarounds
-
remove the leading
0in the last set of runes following the period:-
Set the helm chart version as follows:
version: 2.18.2-branch.testing.79682.162870 -
run
cr package -
we receive
Successfully packaged chart in....
-
-
add one or more non-digit runes to the set of runes following the period:
-
Set the helm chart version as follows:
version: 2.18.2-branch.testing.79682.016a870 -
run
cr package -
we receive
Successfully packaged chart in....
-
Discussion
It seems that the set of runes following a period or hyphen is interpreted as a number rather than a string if all runes are digits. The presence of the leading 0 causes an error when parsing the runes as a number. This was unexpected.
Related issues
- https://github.com/helm/chart-releaser/issues/362 discusses a similar issue with
appVersion, and where the entire value is numeric. This differs from this issue which identifies the problem inversionand where a portion following a period.
I think the issue is that it is being parsed as semver: https://github.com/helm/helm/blob/3fc9f4b2638e76f26739cd77c7017139be81d0ea/pkg/action/package.go#L107 And it doesn't seem to be a test case covered by the semver library: https://github.com/Masterminds/semver/blob/e06051f8fcc4c8b4a4990c337b9862a2448722e5/version_test.go#L10
It seems the problem might be with the pre-release naming I have used: 2.18.2-branch.testing.79682.016a870, where the use of periods in the prerelease name branch.testing.79682.016a870 is causing it to be interpreted as semver.