diff --git a/pkg/steps/release/import_release.go b/pkg/steps/release/import_release.go index 21816ce5f2e..22ce2b96f10 100644 --- a/pkg/steps/release/import_release.go +++ b/pkg/steps/release/import_release.go @@ -9,6 +9,7 @@ import ( "strings" "time" + "github.com/blang/semver" "github.com/sirupsen/logrus" coreapi "k8s.io/api/core/v1" @@ -235,6 +236,14 @@ oc create configmap release-%s --from-file=%s.yaml=${ARTIFACT_DIR}/%s return fmt.Errorf("unexpected image stream contents: %w", err) } + var prefix string + version, err := semver.Parse(releaseIS.ObjectMeta.Name) + if err != nil { + logrus.WithError(err).Errorf("Failed to parse release %s ImageStream name %s as a semantic version.", pullSpec, releaseIS.ObjectMeta.Name) + } else { + prefix = fmt.Sprintf("%d.%d.%d-0", version.Major, version.Minor, version.Patch) + } + // update the stable image stream to have all of the tags from the payload if err := retry.RetryOnConflict(retry.DefaultRetry, func() error { stable := &imagev1.ImageStream{} @@ -242,6 +251,15 @@ oc create configmap release-%s --from-file=%s.yaml=${ARTIFACT_DIR}/%s return fmt.Errorf("could not resolve imagestream %s: %w", streamName, err) } + if prefix != "" { + if stable.ObjectMeta.Annotations == nil { + stable.ObjectMeta.Annotations = make(map[string]string, 1) + } + if _, ok := stable.ObjectMeta.Annotations[releaseConfigAnnotation]; !ok { + stable.ObjectMeta.Annotations[releaseConfigAnnotation] = fmt.Sprintf(`{"name": "%s"}`, prefix) + } + } + existing := sets.NewString() tags := make([]imagev1.TagReference, 0, len(releaseIS.Spec.Tags)+len(stable.Spec.Tags)) for _, tag := range releaseIS.Spec.Tags {