From 96e809dfe75e5537092d9c5e6f32d13c72c80faf Mon Sep 17 00:00:00 2001 From: Andre Sencioles Date: Fri, 28 Feb 2020 14:33:56 +1300 Subject: [PATCH] Parse reference templates in predictable order Fix issue #7701 Signed-off-by: Andre Sencioles --- pkg/engine/engine.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 1cc94d685..94ab1da95 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -213,6 +213,7 @@ func (e Engine) renderWithReferences(tpls, referenceTpls map[string]renderable) // We want to parse the templates in a predictable order. The order favors // higher-level (in file system) templates over deeply nested templates. keys := sortTemplates(tpls) + referenceKeys := sortTemplates(referenceTpls) for _, filename := range keys { r := tpls[filename] @@ -223,8 +224,9 @@ func (e Engine) renderWithReferences(tpls, referenceTpls map[string]renderable) // Adding the reference templates to the template context // so they can be referenced in the tpl function - for filename, r := range referenceTpls { + for _, filename := range referenceKeys { if t.Lookup(filename) == nil { + r := referenceTpls[filename] if _, err := t.New(filename).Parse(r.tpl); err != nil { return map[string]string{}, cleanupParseError(filename, err) }