From 0871dfd6ab5b0f016c2b8f632ff4d615ce5c8584 Mon Sep 17 00:00:00 2001 From: David Dooling Date: Mon, 4 May 2020 16:46:50 -0500 Subject: [PATCH] Use DOCKER_CONFIG for docker config location If the DOCKER_CONFIG environment variable is set, use it when determining if the Docker config file exists. Fall back to kaniko default if it the DOCKER_CONFIG environment variable is not set. Fixes #1228 --- pkg/executor/push.go | 13 +++++++++++-- pkg/executor/push_test.go | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pkg/executor/push.go b/pkg/executor/push.go index f4483de16..ad8369dd6 100644 --- a/pkg/executor/push.go +++ b/pkg/executor/push.go @@ -53,9 +53,18 @@ type withUserAgent struct { const ( UpstreamClientUaKey = "UPSTREAM_CLIENT_TYPE" - DockerConfLocation = "/kaniko/.docker/config.json" ) +// DockerConfLocation returns the file system location of the Docker configuration +// from the DOCKER_CONFIG environment variable. If that variable is not set, it +// returns "/kaniko/.docker/config.json". +func DockerConfLocation() string { + if dockerConfLocation := os.Getenv("DOCKER_CONFIG"); dockerConfLocation != "" { + return dockerConfLocation + } + return "/kaniko/.docker/config.json" +} + func (w *withUserAgent) RoundTrip(r *http.Request) (*http.Response, error) { ua := []string{fmt.Sprintf("kaniko/%s", version.Version())} if upstream := os.Getenv(UpstreamClientUaKey); upstream != "" { @@ -130,7 +139,7 @@ func CheckPushPermissions(opts *config.KanikoOptions) error { if strings.Contains(destRef.RegistryStr(), "gcr.io") { // Checking for existence of docker.config as it's normally required for // authenticated registries and prevent overwriting user provided docker conf - if _, err := fs.Stat(DockerConfLocation); os.IsNotExist(err) { + if _, err := fs.Stat(DockerConfLocation()); os.IsNotExist(err) { if err := execCommand("docker-credential-gcr", "configure-docker").Run(); err != nil { return errors.Wrap(err, "error while configuring docker-credential-gcr helper") } diff --git a/pkg/executor/push_test.go b/pkg/executor/push_test.go index 54eda4654..7bdb50d46 100644 --- a/pkg/executor/push_test.go +++ b/pkg/executor/push_test.go @@ -354,8 +354,8 @@ func TestCheckPushPermissions(t *testing.T) { Destinations: []string{test.Destination}, } if test.ExistingConfig { - afero.WriteFile(fs, DockerConfLocation, []byte(""), os.FileMode(0644)) - defer fs.Remove(DockerConfLocation) + afero.WriteFile(fs, DockerConfLocation(), []byte(""), os.FileMode(0644)) + defer fs.Remove(DockerConfLocation()) } CheckPushPermissions(&opts) if test.ShouldCallExecCommand != calledExecCommand {