diff --git a/cmd/werf/bundle/publish/publish.go b/cmd/werf/bundle/publish/publish.go index 5656d08b48..c9539ce579 100644 --- a/cmd/werf/bundle/publish/publish.go +++ b/cmd/werf/bundle/publish/publish.go @@ -7,6 +7,8 @@ import ( "path/filepath" "time" + "github.com/werf/werf/pkg/slug" + "github.com/Masterminds/semver" "helm.sh/helm/v3/pkg/getter" @@ -370,7 +372,12 @@ func runPublish(ctx context.Context) error { chartVersion := cmdData.Tag if _, err := semver.NewVersion(chartVersion); err != nil { - chartVersion = fmt.Sprintf("0.0.0-%d-%s", time.Now().Unix(), chartVersion) + chartVersion = fmt.Sprintf("0.0.0-%d-%s", time.Now().Unix(), slug.Slug(chartVersion)) + if _, err := semver.NewVersion(chartVersion); err != nil { + fallbackChartVersion := fmt.Sprintf("0.0.0-%d", time.Now().Unix()) + logboek.Context(ctx).Warn().LogF("Unable to use %q as chart version, will fallback on chart version %q\n", chartVersion, fallbackChartVersion) + chartVersion = fallbackChartVersion + } } bundleTmpDir := filepath.Join(werf.GetServiceDir(), "tmp", "bundles", uuid.NewV4().String()) diff --git a/pkg/slug/slug.go b/pkg/slug/slug.go index c6469b4746..28aeaa958e 100644 --- a/pkg/slug/slug.go +++ b/pkg/slug/slug.go @@ -71,7 +71,7 @@ func ValidateDockerTag(name string) error { return nil } - return fmt.Errorf(`%q is not a valid docker tag + return fmt.Errorf(`%q is not a valid docker tag - a tag name must be valid ASCII and may contain lowercase and uppercase letters, digits, underscores, periods and dashes; - a tag name may not start with a period or a dash and may contain a maximum of 128 characters.`, name)