From f0864d3880dc032324bce5b150ec9ede26e3358b Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Thu, 3 Apr 2025 13:31:09 -0400 Subject: [PATCH] pkg/build/builder/util/dockerfile.Write: reproduce heredocs When writing out the contents of a parsed Dockerfile, attempt to reproduce heredocs that followed instructions. Signed-off-by: Nalin Dahyabhai --- .../builder/util/dockerfile/dockerfile.go | 5 ++++ .../util/dockerfile/dockerfile_test.go | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/pkg/build/builder/util/dockerfile/dockerfile.go b/pkg/build/builder/util/dockerfile/dockerfile.go index 6b0292cbfc..f671795282 100644 --- a/pkg/build/builder/util/dockerfile/dockerfile.go +++ b/pkg/build/builder/util/dockerfile/dockerfile.go @@ -62,6 +62,11 @@ func Write(node *parser.Node) []byte { } buf.Write([]byte(n.Value)) } + for _, heredoc := range node.Heredocs { + buf.Write([]byte(heredoc.Content)) + buf.Write([]byte("\n")) + buf.Write([]byte(heredoc.Name)) + } buf.Write([]byte("\n")) return buf.Bytes() } diff --git a/pkg/build/builder/util/dockerfile/dockerfile_test.go b/pkg/build/builder/util/dockerfile/dockerfile_test.go index a734e54721..2bf9240cf1 100644 --- a/pkg/build/builder/util/dockerfile/dockerfile_test.go +++ b/pkg/build/builder/util/dockerfile/dockerfile_test.go @@ -92,6 +92,36 @@ CMD ["-c","env"] USER 1001 WORKDIR /home HEALTHCHECK --interval=60s --timeout=10s CMD ["/usr/bin/true"] +`, + }, + "Dockerfile with heredoc": { + in: `# This is a Dockerfile +FROM scratch +LABEL version=1.0 +# Here we start building a second image +FROM busybox +ENV PATH=/bin +RUN <