Skip to content

Commit

Permalink
Merge pull request #664 from ritmun/promotion
Browse files Browse the repository at this point in the history
SDCICD-1418 improve resourceTemplates looping for promotion, remove dependency on target name if canary not set
  • Loading branch information
openshift-merge-bot[bot] authored Feb 14, 2025
2 parents 84e3537 + 6c0ba97 commit 1bff731
Showing 1 changed file with 25 additions and 23 deletions.
48 changes: 25 additions & 23 deletions cmd/promote/git/app_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"os/exec"
"path/filepath"
"regexp"
"strconv"
"strings"

kyaml "sigs.k8s.io/kustomize/kyaml/yaml"
Expand All @@ -15,9 +16,8 @@ import (
)

const (
canaryStr = "-prod-canary"
prodHiveStr = "hivep"
resourcePath = "/hack/olm-registry/olm-artifacts-template.yaml"
canaryStr = "-prod-canary"
prodHiveStr = "hivep"
)

type Service struct {
Expand Down Expand Up @@ -46,24 +46,29 @@ func replaceTargetSha(fileContent string, targetSuffix string, promotionGitHash
return "", fmt.Errorf("error parsing saas YAML: %v", err), false
}
targetFound := false
targets, err := kyaml.Lookup("resourceTemplates", "[path="+resourcePath+"]", "targets").Filter(node)
rts, err := kyaml.Lookup("resourceTemplates").Filter(node)
if err != nil {
return "", fmt.Errorf("error querying saas YAML: %v", err), false
return "", fmt.Errorf("error querying resource templates: %v", err), false
}
err = targets.VisitElements(func(element *kyaml.RNode) error {
name, _ := element.GetString("name")
match, _ := regexp.MatchString("(.*)"+targetSuffix, name)
if match {
targetFound = true
fmt.Println("updating target: ", name)
_, err = element.Pipe(kyaml.SetField("ref", kyaml.NewStringRNode(promotionGitHash)))
if err != nil {
return fmt.Errorf("error setting ref: %v", err)
}
for i := range len(rts.Content()) {
targets, err := kyaml.Lookup("resourceTemplates", strconv.Itoa(i), "targets").Filter(node)
if err != nil {
return "", fmt.Errorf("error querying saas YAML: %v", err), false
}
return nil
})

err = targets.VisitElements(func(element *kyaml.RNode) error {
name, _ := element.GetString("name")
match, _ := regexp.MatchString("(.*)"+targetSuffix, name)
if match {
targetFound = true
fmt.Println("updating target: ", name)
_, err = element.Pipe(kyaml.SetField("ref", kyaml.NewStringRNode(promotionGitHash)))
if err != nil {
return fmt.Errorf("error setting ref: %v", err)
}
}
return nil
})
}
return node.MustString(), err, targetFound
}

Expand Down Expand Up @@ -279,11 +284,8 @@ func (a AppInterface) UpdateAppInterface(serviceName, saasFile, currentGitHash,
return fmt.Errorf("error modifying YAML: %v", err)
}
if !canaryTargetsSetUp {
fmt.Println("canary targets not set, continuing to promote all production hives.")
newContent, err, _ = replaceTargetSha(string(fileContent), prodHiveStr, promotionGitHash)
}
if err != nil {
return fmt.Errorf("error modifying YAML: %v", err)
fmt.Println("canary targets not set, continuing to replace all occurrences of sha.")
newContent = strings.ReplaceAll(string(fileContent), currentGitHash, promotionGitHash)
}

err = os.WriteFile(saasFile, []byte(newContent), 0644)
Expand Down

0 comments on commit 1bff731

Please sign in to comment.