diff --git a/cmd/imagePushToRegistry.go b/cmd/imagePushToRegistry.go index 75940b043b..55a8a2934d 100644 --- a/cmd/imagePushToRegistry.go +++ b/cmd/imagePushToRegistry.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "regexp" + "strings" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/pkg/errors" @@ -90,6 +91,9 @@ func runImagePushToRegistry(config *imagePushToRegistryOptions, telemetryData *t } } + // Docker image tags don't allow plus signs in tags, thus replacing with dash + config.SourceImageTag = strings.ReplaceAll(config.SourceImageTag, "+", "-") + config.TargetImageTag = strings.ReplaceAll(config.TargetImageTag, "+", "-") re := regexp.MustCompile(`^https?://`) config.SourceRegistryURL = re.ReplaceAllString(config.SourceRegistryURL, "") config.TargetRegistryURL = re.ReplaceAllString(config.TargetRegistryURL, "") diff --git a/cmd/imagePushToRegistry_test.go b/cmd/imagePushToRegistry_test.go index db26057e4f..29a2fc02dd 100644 --- a/cmd/imagePushToRegistry_test.go +++ b/cmd/imagePushToRegistry_test.go @@ -51,10 +51,12 @@ func TestRunImagePushToRegistry(t *testing.T) { config := imagePushToRegistryOptions{ SourceRegistryURL: "https://source.registry", SourceImages: []string{"source-image"}, + SourceImageTag: "1.0.0-123+456", SourceRegistryUser: "sourceuser", SourceRegistryPassword: "sourcepassword", TargetRegistryURL: "https://target.registry", TargetImages: map[string]any{"source-image": "target-image"}, + TargetImageTag: "1.0.0-123+456", TargetRegistryUser: "targetuser", TargetRegistryPassword: "targetpassword", } @@ -65,6 +67,8 @@ func TestRunImagePushToRegistry(t *testing.T) { createdConfig, err := utils.FileRead(targetDockerConfigPath) assert.NoError(t, err) assert.Equal(t, customDockerConfig, string(createdConfig)) + assert.Equal(t, "1.0.0-123-456", config.SourceImageTag) + assert.Equal(t, "1.0.0-123-456", config.TargetImageTag) }) t.Run("failed to copy image", func(t *testing.T) {