in release/pkg/assets_capi.go [31:154]
func (r *ReleaseConfig) GetCAPIAssets() ([]Artifact, error) {
gitTag, err := r.readGitTag(capiProjectPath, r.BuildRepoBranchName)
if err != nil {
return nil, errors.Cause(err)
}
capiImages := []string{
"cluster-api-controller",
"kubeadm-bootstrap-controller",
"kubeadm-control-plane-controller",
}
componentTagOverrideMap := map[string]ImageTagOverride{}
sourcedFromBranch := r.BuildRepoBranchName
artifacts := []Artifact{}
for _, image := range capiImages {
repoName := fmt.Sprintf("kubernetes-sigs/cluster-api/%s", image)
tagOptions := map[string]string{
"gitTag": gitTag,
"projectPath": capiProjectPath,
}
sourceImageUri, sourcedFromBranch, err := r.GetSourceImageURI(image, repoName, tagOptions)
if err != nil {
return nil, errors.Cause(err)
}
if sourcedFromBranch != r.BuildRepoBranchName {
gitTag, err = r.readGitTag(capiProjectPath, sourcedFromBranch)
if err != nil {
return nil, errors.Cause(err)
}
tagOptions["gitTag"] = gitTag
}
releaseImageUri, err := r.GetReleaseImageURI(image, repoName, tagOptions)
if err != nil {
return nil, errors.Cause(err)
}
imageArtifact := &ImageArtifact{
AssetName: image,
SourceImageURI: sourceImageUri,
ReleaseImageURI: releaseImageUri,
Arch: []string{"amd64"},
OS: "linux",
GitTag: gitTag,
ProjectPath: capiProjectPath,
SourcedFromBranch: sourcedFromBranch,
}
artifacts = append(artifacts, Artifact{Image: imageArtifact})
componentTagOverrideMap[image] = ImageTagOverride{
Repository: repoName,
ReleaseUri: imageArtifact.ReleaseImageURI,
}
}
var imageTagOverrides []ImageTagOverride
kubeRbacProxyImageTagOverride, err := r.GetKubeRbacProxyImageTagOverride()
if err != nil {
return nil, errors.Cause(err)
}
componentManifestMap := map[string][]string{
"bootstrap-kubeadm": {"bootstrap-components.yaml", "metadata.yaml"},
"cluster-api": {"core-components.yaml", "metadata.yaml"},
"control-plane-kubeadm": {"control-plane-components.yaml", "metadata.yaml"},
}
sortedComponentNames := sortManifestMap(componentManifestMap)
for _, component := range sortedComponentNames {
manifestList := componentManifestMap[component]
for _, manifest := range manifestList {
var sourceS3Prefix string
var releaseS3Path string
var imageTagOverride ImageTagOverride
latestPath := getLatestUploadDestination(sourcedFromBranch)
if r.DevRelease || r.ReleaseEnvironment == "development" {
sourceS3Prefix = fmt.Sprintf("%s/%s/manifests/%s/%s", capiProjectPath, latestPath, component, gitTag)
} else {
sourceS3Prefix = fmt.Sprintf("releases/bundles/%d/artifacts/cluster-api/manifests/%s/%s", r.BundleNumber, component, gitTag)
}
if r.DevRelease {
releaseS3Path = fmt.Sprintf("artifacts/%s/cluster-api/manifests/%s/%s", r.DevReleaseUriVersion, component, gitTag)
} else {
releaseS3Path = fmt.Sprintf("releases/bundles/%d/artifacts/cluster-api/manifests/%s/%s", r.BundleNumber, component, gitTag)
}
cdnURI, err := r.GetURI(filepath.Join(releaseS3Path, manifest))
if err != nil {
return nil, errors.Cause(err)
}
if component == "bootstrap-kubeadm" {
imageTagOverride = componentTagOverrideMap["kubeadm-bootstrap-controller"]
} else if component == "cluster-api" {
imageTagOverride = componentTagOverrideMap["cluster-api-controller"]
} else {
imageTagOverride = componentTagOverrideMap["kubeadm-control-plane-controller"]
}
imageTagOverrides = append(imageTagOverrides, imageTagOverride, kubeRbacProxyImageTagOverride)
manifestArtifact := &ManifestArtifact{
SourceS3Key: manifest,
SourceS3Prefix: sourceS3Prefix,
ArtifactPath: filepath.Join(r.ArtifactDir, fmt.Sprintf("%s-manifests", component), r.BuildRepoHead),
ReleaseName: manifest,
ReleaseS3Path: releaseS3Path,
ReleaseCdnURI: cdnURI,
ImageTagOverrides: imageTagOverrides,
GitTag: gitTag,
ProjectPath: capiProjectPath,
SourcedFromBranch: sourcedFromBranch,
Component: component,
}
artifacts = append(artifacts, Artifact{Manifest: manifestArtifact})
}
}
return artifacts, nil
}