From d6bb88f92479cb5d42da960fb056de34eb686ca0 Mon Sep 17 00:00:00 2001 From: Priya Wadhwa Date: Mon, 21 May 2018 14:51:00 -0700 Subject: [PATCH] Resolve environment replacement for arg --- integration/dockerfiles/Dockerfile_test_scratch | 4 +++- pkg/commands/arg.go | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/integration/dockerfiles/Dockerfile_test_scratch b/integration/dockerfiles/Dockerfile_test_scratch index e2a1383ee..340d05532 100644 --- a/integration/dockerfiles/Dockerfile_test_scratch +++ b/integration/dockerfiles/Dockerfile_test_scratch @@ -6,7 +6,9 @@ COPY $file /foo ARG file2=context/bar/bat COPY $file2 /bat # Check that overriding a default value works -ARG file3=context/bar/baz +ENV baz baz +ENV src file3 +ARG ${src}=context/bar/${baz} COPY $file3 /baz # Check that setting an ENV will override the ARG ENV file context/bar/bam/bat diff --git a/pkg/commands/arg.go b/pkg/commands/arg.go index cf4dcd525..e91489eb9 100644 --- a/pkg/commands/arg.go +++ b/pkg/commands/arg.go @@ -18,6 +18,7 @@ package commands import ( "github.com/GoogleContainerTools/kaniko/pkg/dockerfile" + "github.com/GoogleContainerTools/kaniko/pkg/util" "github.com/docker/docker/builder/dockerfile/instructions" "github.com/google/go-containerregistry/v1" "github.com/sirupsen/logrus" @@ -31,7 +32,20 @@ type ArgCommand struct { // ExecuteCommand only needs to add this ARG key/value as seen func (r *ArgCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.BuildArgs) error { logrus.Info("ARG") - buildArgs.AddArg(r.cmd.Key, r.cmd.Value) + replacementEnvs := buildArgs.ReplacementEnvs(config.Env) + resolvedKey, err := util.ResolveEnvironmentReplacement(r.cmd.Key, replacementEnvs, false) + if err != nil { + return err + } + var resolvedValue *string + if r.cmd.Value != nil { + value, err := util.ResolveEnvironmentReplacement(*r.cmd.Value, replacementEnvs, false) + if err != nil { + return err + } + resolvedValue = &value + } + buildArgs.AddArg(resolvedKey, resolvedValue) return nil }