Resolve environment replacement for arg

This commit is contained in:
Priya Wadhwa 2018-05-21 14:51:00 -07:00
parent e673e36576
commit d6bb88f924
No known key found for this signature in database
GPG Key ID: 0D0DAFD8F7AA73AE
2 changed files with 18 additions and 2 deletions

View File

@ -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

View File

@ -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
}