Merge pull request 'fix: propagate delivery template updates' (#5) from fix/copy-delivery-bases into main
This commit is contained in:
commit
d5e11d7a6a
|
|
@ -125,10 +125,7 @@ func (r Runner) Run() error {
|
|||
if err := renderCiliumConfig(filepath.Join(dir, "base", "cilium-config"), r.Config); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := copyAndRenderTektonBase(cicdTemplateDir, dir, r.Config); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := renderDeliveryConfig(filepath.Join(dir, "base", "tekton-triggers"), r.Config); err != nil {
|
||||
if err := copyAndRenderDeliveryBases(cicdTemplateDir, dir, r.Config); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := writeDemocraticCSISecret(filepath.Join(dir, "base", "democratic-csi", "secret.sops.yaml"), r.Config.DemocraticCSI, r.Config.SOPS.AgeKeyPath); err != nil {
|
||||
|
|
@ -256,12 +253,21 @@ func renderDeliveryConfig(dir string, cfg config.Config) error {
|
|||
})
|
||||
}
|
||||
|
||||
func copyAndRenderTektonBase(templateDir, repoDir string, cfg config.Config) error {
|
||||
tektonDir := filepath.Join(repoDir, "base", "tekton")
|
||||
if err := copyDir(filepath.Join(templateDir, "base", "tekton"), tektonDir, true); err != nil {
|
||||
func copyAndRenderDeliveryBases(templateDir, repoDir string, cfg config.Config) error {
|
||||
bases := []string{"gateway", "tekton", "tekton-triggers"}
|
||||
for _, base := range bases {
|
||||
baseDir := filepath.Join(repoDir, "base", base)
|
||||
if err := copyDir(filepath.Join(templateDir, "base", base), baseDir, true); err != nil {
|
||||
return err
|
||||
}
|
||||
return renderDeliveryConfig(tektonDir, cfg)
|
||||
}
|
||||
for _, base := range bases {
|
||||
baseDir := filepath.Join(repoDir, "base", base)
|
||||
if err := renderDeliveryConfig(baseDir, cfg); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func writeDemocraticCSISecret(path string, csi config.DemocraticCSIConfig, ageKeyPath string) error {
|
||||
|
|
|
|||
|
|
@ -51,34 +51,53 @@ func TestRenderDeliveryConfig(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestCopyAndRenderTektonBaseOverwritesExistingMigrationOutput(t *testing.T) {
|
||||
func TestCopyAndRenderDeliveryBasesOverwritesExistingMigrationOutput(t *testing.T) {
|
||||
templateDir := t.TempDir()
|
||||
repoDir := t.TempDir()
|
||||
templateCatalog := filepath.Join(templateDir, "base", "tekton", "catalog-source.yaml")
|
||||
outputCatalog := filepath.Join(repoDir, "base", "tekton", "catalog-source.yaml")
|
||||
if err := os.MkdirAll(filepath.Dir(templateCatalog), 0755); err != nil {
|
||||
files := []struct {
|
||||
base, name, template, want string
|
||||
}{
|
||||
{"gateway", "route.yaml", "host: ${WEBHOOK_HOSTNAME}\npath: ${WEBHOOK_PATH}\n", "host: tekton.example.test\npath: /hooks/forgejo\n"},
|
||||
{"tekton", "catalog-source.yaml", "url: ${TEKTON_CATALOG_REPO_URL}\nref: ${TEKTON_CATALOG_REPO_REF}\n", "url: https://catalog.example.test/tekton.git\nref: release\n"},
|
||||
{"tekton-triggers", "trigger.yaml", "app: ${APP_NAME}\nrepo: ${APP_REPO_URL}\n", "app: demo\nrepo: https://git.example.test/demo.git\n"},
|
||||
}
|
||||
for _, file := range files {
|
||||
templatePath := filepath.Join(templateDir, "base", file.base, file.name)
|
||||
outputPath := filepath.Join(repoDir, "base", file.base, file.name)
|
||||
if err := os.MkdirAll(filepath.Dir(templatePath), 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.MkdirAll(filepath.Dir(outputCatalog), 0755); err != nil {
|
||||
if err := os.MkdirAll(filepath.Dir(outputPath), 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(templateCatalog, []byte("url: ${TEKTON_CATALOG_REPO_URL}\nref: ${TEKTON_CATALOG_REPO_REF}\n"), 0644); err != nil {
|
||||
if err := os.WriteFile(templatePath, []byte(file.template), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(outputCatalog, []byte("stale: catalog\n"), 0644); err != nil {
|
||||
if err := os.WriteFile(outputPath, []byte("stale: output\n"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
customGatewayFile := filepath.Join(repoDir, "base", "gateway", "custom.yaml")
|
||||
if err := os.WriteFile(customGatewayFile, []byte("custom: route\n"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
cfg := config.Config{Templates: config.TemplateConfig{TektonCatalogRepoURL: "https://catalog.example.test/tekton.git", TektonCatalogRepoRef: "release"}}
|
||||
if err := copyAndRenderTektonBase(templateDir, repoDir, cfg); err != nil {
|
||||
cfg := config.Config{
|
||||
Delivery: config.DeliveryConfig{AppName: "demo", AppRepoURL: "https://git.example.test/demo.git", WebhookHostname: "tekton.example.test", WebhookPath: "/hooks/forgejo"},
|
||||
Templates: config.TemplateConfig{TektonCatalogRepoURL: "https://catalog.example.test/tekton.git", TektonCatalogRepoRef: "release"},
|
||||
}
|
||||
if err := copyAndRenderDeliveryBases(templateDir, repoDir, cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
content, err := os.ReadFile(outputCatalog)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
for _, file := range files {
|
||||
content, err := os.ReadFile(filepath.Join(repoDir, "base", file.base, file.name))
|
||||
if err != nil || string(content) != file.want {
|
||||
t.Fatalf("%s was not copied and rendered: %q, %v", file.base, content, err)
|
||||
}
|
||||
if string(content) != "url: https://catalog.example.test/tekton.git\nref: release\n" {
|
||||
t.Fatalf("Tekton catalog source was not copied and rendered: %q", content)
|
||||
}
|
||||
content, err := os.ReadFile(customGatewayFile)
|
||||
if err != nil || string(content) != "custom: route\n" {
|
||||
t.Fatalf("custom gateway file was not preserved: %q, %v", content, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue