in release/pkg/generate_spec.go [355:464]
func (r *ReleaseConfig) GetSourceImageURI(name, repoName string, tagOptions map[string]string) (string, string, error) {
var sourceImageUri string
sourcedFromBranch := r.BuildRepoBranchName
if r.DevRelease || r.ReleaseEnvironment == "development" {
latestTag := getLatestUploadDestination(r.BuildRepoBranchName)
if name == "bottlerocket-bootstrap" {
sourceImageUri = fmt.Sprintf("%s/%s:v%s-%s-%s",
r.SourceContainerRegistry,
repoName,
tagOptions["eksDReleaseChannel"],
tagOptions["eksDReleaseNumber"],
latestTag,
)
} else if name == "cloud-provider-vsphere" {
sourceImageUri = fmt.Sprintf("%s/%s:%s-%s",
r.SourceContainerRegistry,
repoName,
tagOptions["gitTag"],
latestTag,
)
} else if name == "kind-node" {
sourceImageUri = fmt.Sprintf("%s/%s:%s-eks-%s-%s-%s",
r.SourceContainerRegistry,
repoName,
tagOptions["kubeVersion"],
tagOptions["eksDReleaseChannel"],
tagOptions["eksDReleaseNumber"],
latestTag,
)
} else {
sourceImageUri = fmt.Sprintf("%s/%s:%s",
r.SourceContainerRegistry,
repoName,
latestTag,
)
}
if !r.DryRun {
sourceEcrAuthConfig := r.SourceClients.ECR.AuthConfig
err := images.PollForExistence(r.DevRelease, sourceEcrAuthConfig, sourceImageUri, r.SourceContainerRegistry, r.ReleaseEnvironment, r.BuildRepoBranchName)
if err != nil {
if r.BuildRepoBranchName != "main" {
fmt.Printf("Tag corresponding to %s branch not found for %s image. Using image artifact from main\n", r.BuildRepoBranchName, repoName)
var gitTagFromMain string
if name == "bottlerocket-bootstrap" {
gitTagFromMain = "non-existent"
} else {
gitTagFromMain, err = r.readGitTag(tagOptions["projectPath"], "main")
if err != nil {
return "", "", errors.Cause(err)
}
}
sourceImageUri = strings.NewReplacer(r.BuildRepoBranchName, "latest", tagOptions["gitTag"], gitTagFromMain).Replace(sourceImageUri)
sourcedFromBranch = "main"
} else {
return "", "", errors.Cause(err)
}
}
}
} else if r.ReleaseEnvironment == "production" {
if name == "bottlerocket-bootstrap" {
sourceImageUri = fmt.Sprintf("%s/%s:v%s-%s-eks-a-%d",
r.SourceContainerRegistry,
repoName,
tagOptions["eksDReleaseChannel"],
tagOptions["eksDReleaseNumber"],
r.BundleNumber,
)
} else if name == "cloud-provider-vsphere" {
sourceImageUri = fmt.Sprintf("%s/%s:%s-eks-d-%s-eks-a-%d",
r.SourceContainerRegistry,
repoName,
tagOptions["gitTag"],
tagOptions["eksDReleaseChannel"],
r.BundleNumber,
)
} else if name == "eks-anywhere-cluster-controller" {
sourceImageUri = fmt.Sprintf("%s/%s:%s-eks-a-%d",
r.SourceContainerRegistry,
repoName,
r.ReleaseVersion,
r.BundleNumber,
)
} else if name == "eks-anywhere-diagnostic-collector" {
sourceImageUri = fmt.Sprintf("%s/%s:%s-eks-a-%d",
r.SourceContainerRegistry,
repoName,
r.ReleaseVersion,
r.BundleNumber,
)
} else if name == "kind-node" {
sourceImageUri = fmt.Sprintf("%s/%s:%s-eks-d-%s-%s-eks-a-%d",
r.SourceContainerRegistry,
repoName,
tagOptions["kubeVersion"],
tagOptions["eksDReleaseChannel"],
tagOptions["eksDReleaseNumber"],
r.BundleNumber,
)
} else {
sourceImageUri = fmt.Sprintf("%s/%s:%s-eks-a-%d",
r.SourceContainerRegistry,
repoName,
tagOptions["gitTag"],
r.BundleNumber,
)
}
}
return sourceImageUri, sourcedFromBranch, nil
}