From 66d42b6ca48feddb8413e0fceef004547ed92b2f Mon Sep 17 00:00:00 2001 From: eding Date: Sun, 13 Sep 2026 12:27:21 +0200 Subject: [PATCH] fix: preserve generated app registrations --- internal/bootstrap/bootstrap.go | 22 ++++++++++++++++++++++ internal/bootstrap/bootstrap_test.go | 11 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/internal/bootstrap/bootstrap.go b/internal/bootstrap/bootstrap.go index 80ab212..53429dd 100644 --- a/internal/bootstrap/bootstrap.go +++ b/internal/bootstrap/bootstrap.go @@ -479,12 +479,34 @@ func renderPlatformDeliveryConfig(dir string, cfg config.Config) error { func copyAndRenderPlatformDeliveryBases(templateDir, repoDir string, cfg config.Config) error { bases := []string{"gateway", "tekton", "tekton-triggers"} + apps := filepath.Join(repoDir, "base", "tekton", "apps") + backup := apps + ".maidn-preserve" + if err := os.RemoveAll(backup); err != nil { + return err + } + if _, err := os.Stat(apps); err == nil { + if err := os.Rename(apps, backup); err != nil { + return err + } + } else if !os.IsNotExist(err) { + return err + } for _, base := range bases { baseDir := filepath.Join(repoDir, "base", base) if err := copyDir(filepath.Join(templateDir, "base", base), baseDir, true); err != nil { return err } } + if _, err := os.Stat(backup); err == nil { + if err := os.RemoveAll(apps); err != nil { + return err + } + if err := os.Rename(backup, apps); err != nil { + return err + } + } else if !os.IsNotExist(err) { + return err + } for _, base := range bases { baseDir := filepath.Join(repoDir, "base", base) if err := renderPlatformDeliveryConfig(baseDir, cfg); err != nil { diff --git a/internal/bootstrap/bootstrap_test.go b/internal/bootstrap/bootstrap_test.go index 79bc66d..99c552c 100644 --- a/internal/bootstrap/bootstrap_test.go +++ b/internal/bootstrap/bootstrap_test.go @@ -240,6 +240,13 @@ func TestCopyAndRenderPlatformDeliveryBasesOverwritesExistingMigrationOutput(t * if err := os.WriteFile(customGatewayFile, []byte("custom: route\n"), 0644); err != nil { t.Fatal(err) } + appRegistration := filepath.Join(repoDir, "base", "tekton", "apps", "fixture.yaml") + if err := os.MkdirAll(filepath.Dir(appRegistration), 0755); err != nil { + t.Fatal(err) + } + if err := os.WriteFile(appRegistration, []byte("registered: fixture\n"), 0644); err != nil { + t.Fatal(err) + } cfg := config.Config{ Git: config.GitConfig{BaseURL: "https://git.example.test", Owner: "user-org"}, @@ -259,6 +266,10 @@ func TestCopyAndRenderPlatformDeliveryBasesOverwritesExistingMigrationOutput(t * if err != nil || string(content) != "custom: route\n" { t.Fatalf("custom gateway file was not preserved: %q, %v", content, err) } + content, err = os.ReadFile(appRegistration) + if err != nil || string(content) != "registered: fixture\n" { + t.Fatalf("generated app registration was not preserved: %q, %v", content, err) + } } func TestCopyTemplateBaseComponentsRefreshesCNPGAndPreservesGeneratedSecrets(t *testing.T) {