func()

in release/pkg/generate_spec.go [466:565]


func (r *ReleaseConfig) GetReleaseImageURI(name, repoName string, tagOptions map[string]string) (string, error) {
	var releaseImageUri string

	if name == "bottlerocket-bootstrap" {
		releaseImageUri = fmt.Sprintf("%s/%s:v%s-%s-eks-a",
			r.ReleaseContainerRegistry,
			repoName,
			tagOptions["eksDReleaseChannel"],
			tagOptions["eksDReleaseNumber"],
		)
	} else if name == "cloud-provider-vsphere" {
		releaseImageUri = fmt.Sprintf("%s/%s:%s-eks-d-%s-eks-a",
			r.ReleaseContainerRegistry,
			repoName,
			tagOptions["gitTag"],
			tagOptions["eksDReleaseChannel"],
		)
	} else if name == "eks-anywhere-cluster-controller" {
		if r.DevRelease {
			releaseImageUri = fmt.Sprintf("%s/%s:v0.0.0-eks-a",
				r.ReleaseContainerRegistry,
				repoName,
			)
		} else {
			releaseImageUri = fmt.Sprintf("%s/%s:%s-eks-a",
				r.ReleaseContainerRegistry,
				repoName,
				r.ReleaseVersion,
			)
		}
	} else if name == "eks-anywhere-diagnostic-collector" {
		if r.DevRelease {
			releaseImageUri = fmt.Sprintf("%s/%s:v0.0.0-eks-a",
				r.ReleaseContainerRegistry,
				repoName,
			)
		} else {
			releaseImageUri = fmt.Sprintf("%s/%s:%s-eks-a",
				r.ReleaseContainerRegistry,
				repoName,
				r.ReleaseVersion,
			)
		}
	} else if name == "kind-node" {
		releaseImageUri = fmt.Sprintf("%s/%s:%s-eks-d-%s-%s-eks-a",
			r.ReleaseContainerRegistry,
			repoName,
			tagOptions["kubeVersion"],
			tagOptions["eksDReleaseChannel"],
			tagOptions["eksDReleaseNumber"],
		)
	} else {
		releaseImageUri = fmt.Sprintf("%s/%s:%s-eks-a",
			r.ReleaseContainerRegistry,
			repoName,
			tagOptions["gitTag"],
		)
	}

	var semver string
	if r.DevRelease {
		currentSourceImageUri, _, err := r.GetSourceImageURI(name, repoName, tagOptions)
		if err != nil {
			return "", errors.Cause(err)
		}

		previousReleaseImageSemver, err := r.GetPreviousReleaseImageSemver(releaseImageUri)
		if err != nil {
			return "", errors.Cause(err)
		}
		if previousReleaseImageSemver == "" {
			semver = r.DevReleaseUriVersion
		} else {
			fmt.Printf("Previous release image semver for %s image: %s\n", repoName, previousReleaseImageSemver)
			previousReleaseImageUri := fmt.Sprintf("%s-%s", releaseImageUri, previousReleaseImageSemver)

			sameDigest, err := r.CompareHashWithPreviousBundle(currentSourceImageUri, previousReleaseImageUri)
			if err != nil {
				return "", errors.Cause(err)
			}
			if sameDigest {
				semver = previousReleaseImageSemver
				fmt.Printf("Image digest for %s image has not changed, tagging with previous dev release semver: %s\n", repoName, semver)
			} else {
				newSemver, err := generateNewDevReleaseVersion(previousReleaseImageSemver, "vDev", r.BuildRepoBranchName)
				if err != nil {
					return "", errors.Cause(err)
				}
				semver = strings.ReplaceAll(newSemver, "+", "-")
				fmt.Printf("Image digest for %s image has changed, tagging with new dev release semver: %s\n", repoName, semver)
			}
		}
	} else {
		semver = fmt.Sprintf("%d", r.BundleNumber)
	}

	releaseImageUri = fmt.Sprintf("%s-%s", releaseImageUri, semver)

	return releaseImageUri, nil
}