From 3873aa05e3a7f1db29853eaeaf35751f785f70a4 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Fri, 25 Oct 2019 11:34:49 +0200 Subject: [PATCH 01/19] root: add --registry-mirror flag Signed-off-by: Yoan Blanc --- cmd/executor/cmd/root.go | 1 + pkg/config/options.go | 1 + pkg/util/image_util.go | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/cmd/executor/cmd/root.go b/cmd/executor/cmd/root.go index 199f3fa7a9..eb244be211 100644 --- a/cmd/executor/cmd/root.go +++ b/cmd/executor/cmd/root.go @@ -140,6 +140,7 @@ func addKanikoOptionsFlags(cmd *cobra.Command) { RootCmd.PersistentFlags().DurationVarP(&opts.CacheTTL, "cache-ttl", "", time.Hour*336, "Cache timeout in hours. Defaults to two weeks.") RootCmd.PersistentFlags().VarP(&opts.InsecureRegistries, "insecure-registry", "", "Insecure registry using plain HTTP to push and pull. Set it repeatedly for multiple registries.") RootCmd.PersistentFlags().VarP(&opts.SkipTLSVerifyRegistries, "skip-tls-verify-registry", "", "Insecure registry ignoring TLS verify to push and pull. Set it repeatedly for multiple registries.") + RootCmd.PersistentFlags().StringVarP(&opts.RegistryMirror, "registry-mirror", "", "", "Registry mirror to use has pull-through cache instead of docker.io.") } // addHiddenFlags marks certain flags as hidden from the executor help text diff --git a/pkg/config/options.go b/pkg/config/options.go index 44af681ecd..862ec9e110 100644 --- a/pkg/config/options.go +++ b/pkg/config/options.go @@ -51,6 +51,7 @@ type KanikoOptions struct { Cleanup bool InsecureRegistries multiArg SkipTLSVerifyRegistries multiArg + RegistryMirror string } // WarmerOptions are options that are set by command line arguments to the cache warmer. diff --git a/pkg/util/image_util.go b/pkg/util/image_util.go index 0978a6fef0..e24134c789 100644 --- a/pkg/util/image_util.go +++ b/pkg/util/image_util.go @@ -101,11 +101,25 @@ func remoteImage(image string, opts *config.KanikoOptions) (v1.Image, error) { } registryName := ref.Context().RegistryStr() + var newReg name.Registry + + if opts.RegistryMirror != "" && registryName == name.DefaultRegistry { + registryName = opts.RegistryMirror + + newReg, err = name.NewRegistry(opts.RegistryMirror, name.StrictValidation) + if err != nil { + return nil, err + } + } + if opts.InsecurePull || opts.InsecureRegistries.Contains(registryName) { - newReg, err := name.NewRegistry(registryName, name.WeakValidation, name.Insecure) + newReg, err = name.NewRegistry(registryName, name.WeakValidation, name.Insecure) if err != nil { return nil, err } + } + + if newReg != ref.Context().Registry { if tag, ok := ref.(name.Tag); ok { tag.Repository.Registry = newReg ref = tag From 235fc4a61f426dd55dc0f10b0aaec0eb0d857da5 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Fri, 25 Oct 2019 13:07:03 +0200 Subject: [PATCH 02/19] util: add test to RegistryMirror option Signed-off-by: Yoan Blanc --- pkg/util/image_util_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/util/image_util_test.go b/pkg/util/image_util_test.go index c44fe8a584..bd6f4cb22e 100644 --- a/pkg/util/image_util_test.go +++ b/pkg/util/image_util_test.go @@ -60,6 +60,7 @@ func Test_StandardImage(t *testing.T) { }, &config.KanikoOptions{}) testutil.CheckErrorAndDeepEqual(t, false, err, nil, actual) } + func Test_ScratchImage(t *testing.T) { stages, err := parse(dockerfile) if err != nil { @@ -93,6 +94,20 @@ func Test_TarImage(t *testing.T) { testutil.CheckErrorAndDeepEqual(t, false, err, nil, actual) } +func Test_ScratchImageFromMirror(t *testing.T) { + stages, err := parse(dockerfile) + if err != nil { + t.Error(err) + } + actual, err := RetrieveSourceImage(config.KanikoStage{ + Stage: stages[1], + }, &config.KanikoOptions{ + RegistryMirror: "https://mirrors.gcr.io", + }) + expected := empty.Image + testutil.CheckErrorAndDeepEqual(t, false, err, expected, actual) +} + // parse parses the contents of a Dockerfile and returns a list of commands func parse(s string) ([]instructions.Stage, error) { p, err := parser.Parse(bytes.NewReader([]byte(s))) From dd9758cccc90152a3e921b4e2ee04b19dabd044c Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Fri, 8 Nov 2019 15:39:43 +0100 Subject: [PATCH 03/19] integration: build using registry-mirror Signed-off-by: Yoan Blanc --- integration/integration_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/integration/integration_test.go b/integration/integration_test.go index 9fd89d7178..42bab1011e 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -169,6 +169,10 @@ func TestMain(m *testing.M) { name: "Pushing hardlink base image", command: []string{"docker", "push", config.hardlinkBaseImage}, }, + { + name: "Building kaniko image using registry-mirror", + command: []string{"docker", "build", "--registry-mirror", "mirror.gcr.io", "-t", ExecutorImage, "-f", "../deploy/Dockerfile", ".."}, + }, } for _, setupCmd := range setupCommands { From 73f7ea0d2c4daa922961dfe7bb0baccf89baa496 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Fri, 8 Nov 2019 16:17:00 +0100 Subject: [PATCH 04/19] fixup! integration: build using registry-mirror Signed-off-by: Yoan Blanc --- integration/integration_test.go | 2 +- pkg/util/image_util_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index 42bab1011e..c443beae5f 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -171,7 +171,7 @@ func TestMain(m *testing.M) { }, { name: "Building kaniko image using registry-mirror", - command: []string{"docker", "build", "--registry-mirror", "mirror.gcr.io", "-t", ExecutorImage, "-f", "../deploy/Dockerfile", ".."}, + command: []string{"docker", "build", "--registry-mirror", "https://mirror.gcr.io", "-t", ExecutorImage, "-f", "../deploy/Dockerfile", ".."}, }, } diff --git a/pkg/util/image_util_test.go b/pkg/util/image_util_test.go index bd6f4cb22e..59458d3ba1 100644 --- a/pkg/util/image_util_test.go +++ b/pkg/util/image_util_test.go @@ -102,7 +102,7 @@ func Test_ScratchImageFromMirror(t *testing.T) { actual, err := RetrieveSourceImage(config.KanikoStage{ Stage: stages[1], }, &config.KanikoOptions{ - RegistryMirror: "https://mirrors.gcr.io", + RegistryMirror: "https://mirror.gcr.io", }) expected := empty.Image testutil.CheckErrorAndDeepEqual(t, false, err, expected, actual) From 6e2287c96911e9a75fb38a06484c1446a6e86b68 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Sun, 10 Nov 2019 12:55:31 +0100 Subject: [PATCH 05/19] readme: add --registry-mirror Signed-off-by: Yoan Blanc --- README.md | 5 +++++ integration/integration_test.go | 2 +- pkg/util/image_util_test.go | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 13510dc2b2..c1b9a1a525 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ _If you are interested in contributing to kaniko, see [DEVELOPMENT.md](DEVELOPME - [--insecure-pull](#--insecure-pull) - [--no-push](#--no-push) - [--oci-layout-path](#--oci-layout-path) + - [--registry-mirror](#--registry-mirror) - [--reproducible](#--reproducible) - [--single-snapshot](#--single-snapshot) - [--snapshotMode](#--snapshotmode) @@ -441,6 +442,10 @@ Set this flag if you want to pull images from a plain HTTP registry. It is suppo Set this flag if you only want to build the image, without pushing to a registry. +#### --registry-mirror + +Set this flag if you want to use a registry mirror instead of default `index.docker.io`. + #### --reproducible Set this flag to strip timestamps out of the built image and make it reproducible. diff --git a/integration/integration_test.go b/integration/integration_test.go index c443beae5f..42bab1011e 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -171,7 +171,7 @@ func TestMain(m *testing.M) { }, { name: "Building kaniko image using registry-mirror", - command: []string{"docker", "build", "--registry-mirror", "https://mirror.gcr.io", "-t", ExecutorImage, "-f", "../deploy/Dockerfile", ".."}, + command: []string{"docker", "build", "--registry-mirror", "mirror.gcr.io", "-t", ExecutorImage, "-f", "../deploy/Dockerfile", ".."}, }, } diff --git a/pkg/util/image_util_test.go b/pkg/util/image_util_test.go index 59458d3ba1..aa9776bdfb 100644 --- a/pkg/util/image_util_test.go +++ b/pkg/util/image_util_test.go @@ -102,7 +102,7 @@ func Test_ScratchImageFromMirror(t *testing.T) { actual, err := RetrieveSourceImage(config.KanikoStage{ Stage: stages[1], }, &config.KanikoOptions{ - RegistryMirror: "https://mirror.gcr.io", + RegistryMirror: "mirror.gcr.io", }) expected := empty.Image testutil.CheckErrorAndDeepEqual(t, false, err, expected, actual) From 6e331de346a7472921751bd36825cbd630f79984 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Fri, 6 Dec 2019 20:10:35 +0100 Subject: [PATCH 06/19] fixup! Merge remote-tracking branch 'origin/master' into registry-mirror Signed-off-by: Yoan Blanc --- pkg/util/image_util.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/util/image_util.go b/pkg/util/image_util.go index 71abee3d67..ed9c13e3cf 100644 --- a/pkg/util/image_util.go +++ b/pkg/util/image_util.go @@ -110,6 +110,7 @@ func remoteImage(image string, opts *config.KanikoOptions) (v1.Image, error) { func prepareRemoteRequest(ref name.Reference, opts *config.KanikoOptions) ([]remote.Option, error) { registryName := ref.Context().RegistryStr() var newReg name.Registry + var err error if opts.RegistryMirror != "" && registryName == name.DefaultRegistry { registryName = opts.RegistryMirror From 908025b6d3e90b442f556d011172cd704c9e90da Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Sun, 22 Dec 2019 11:18:34 +0100 Subject: [PATCH 07/19] integration: removing test on docker Signed-off-by: Yoan Blanc --- integration/integration_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index 7fa76b9890..246e9e6cba 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -121,10 +121,6 @@ func TestMain(m *testing.M) { name: "Pushing hardlink base image", command: []string{"docker", "push", config.hardlinkBaseImage}, }, - { - name: "Building kaniko image using registry-mirror", - command: []string{"docker", "build", "--registry-mirror", "mirror.gcr.io", "-t", ExecutorImage, "-f", "../deploy/Dockerfile", ".."}, - }, } for _, setupCmd := range setupCommands { From c7d173cd998a648c443b5269ca7bf81206759ee6 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Sun, 22 Dec 2019 11:28:13 +0100 Subject: [PATCH 08/19] integration-test: using registry-mirror Signed-off-by: Yoan Blanc --- integration/dockerfiles/Dockerfile_test_run_3 | 20 +++++++++ integration/integration_test.go | 45 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 integration/dockerfiles/Dockerfile_test_run_3 diff --git a/integration/dockerfiles/Dockerfile_test_run_3 b/integration/dockerfiles/Dockerfile_test_run_3 new file mode 100644 index 0000000000..1d48c3e342 --- /dev/null +++ b/integration/dockerfiles/Dockerfile_test_run_3 @@ -0,0 +1,20 @@ +# Copyright 2018 Google, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Test to make sure the executor builds an image correctly +# when no files are changed + +FROM google-appengine/debian9@sha256:1d6a9a6d106bd795098f60f4abb7083626354fa6735e81743c7f8cfca11259f0 +RUN echo "hey" +MAINTAINER kaniko diff --git a/integration/integration_test.go b/integration/integration_test.go index 246e9e6cba..76b496fc4a 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -267,6 +267,51 @@ func TestGitBuildContextWithBranch(t *testing.T) { checkContainerDiffOutput(t, diff, expected) } +func TestBuildViaRegistryMirror(t *testing.T) { + repo := "github.com/GoogleContainerTools/kaniko" + + // Build with docker + dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git") + dockerfile := "integration/dockerfiles/Dockerfile_test_run_2" + dockerCmd := exec.Command("docker", + append([]string{"build", + "-t", dockerImage, + "-f", dockerfile, + repo})...) + out, err := RunCommandWithoutTest(dockerCmd) + if err != nil { + t.Errorf("Failed to build image %s with docker command \"%s\": %s %s", dockerImage, dockerCmd.Args, err, string(out)) + } + + // Build with kaniko + kanikoImage := GetKanikoImage(config.imageRepo, "Dockerfile_test_git") + dockerfile = "integration/dockerfiles/Dockerfile_test_run_3" + kanikoCmd := exec.Command("docker", + append([]string{"run", + "-v", os.Getenv("HOME") + "/.config/gcloud:/root/.config/gcloud", + ExecutorImage, + "-f", dockerfile, + "-d", kanikoImage, + "--registry-mirror", "gcr.io", + "-c", fmt.Sprintf("git://%s", repo)})...) + + out, err = RunCommandWithoutTest(kanikoCmd) + if err != nil { + t.Errorf("Failed to build image %s with kaniko command \"%s\": %v %s", dockerImage, kanikoCmd.Args, err, string(out)) + } + + // container-diff + daemonDockerImage := daemonPrefix + dockerImage + containerdiffCmd := exec.Command("container-diff", "diff", "--no-cache", + daemonDockerImage, kanikoImage, + "-q", "--type=file", "--type=metadata", "--json") + diff := RunCommand(containerdiffCmd, t) + t.Logf("diff = %s", string(diff)) + + expected := fmt.Sprintf(emptyContainerDiff, dockerImage, kanikoImage, dockerImage, kanikoImage) + checkContainerDiffOutput(t, diff, expected) +} + func TestLayers(t *testing.T) { offset := map[string]int{ "Dockerfile_test_add": 12, From 9fb2111379b4b9dafad626b39f9a4fd820853430 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Sun, 22 Dec 2019 14:10:12 +0100 Subject: [PATCH 09/19] fixup! integration-test: using registry-mirror Signed-off-by: Yoan Blanc --- integration/integration_test.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index 76b496fc4a..58ae36901b 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -65,6 +65,7 @@ const ( } } ]` + dockerfileTestRun = "integration/dockerfiles/Dockerfile_test_run_2" ) func TestMain(m *testing.M) { @@ -183,7 +184,6 @@ func TestRun(t *testing.T) { func TestGitBuildcontext(t *testing.T) { repo := "github.com/GoogleContainerTools/kaniko" - dockerfile := "integration/dockerfiles/Dockerfile_test_run_2" // Build with docker dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git") @@ -226,14 +226,13 @@ func TestGitBuildcontext(t *testing.T) { func TestGitBuildContextWithBranch(t *testing.T) { repo := "github.com/GoogleContainerTools/kaniko#refs/tags/v0.10.0" - dockerfile := "integration/dockerfiles/Dockerfile_test_run_2" // Build with docker dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git") dockerCmd := exec.Command("docker", append([]string{"build", "-t", dockerImage, - "-f", dockerfile, + "-f", dockerfileTestRun, repo})...) out, err := RunCommandWithoutTest(dockerCmd) if err != nil { @@ -272,11 +271,10 @@ func TestBuildViaRegistryMirror(t *testing.T) { // Build with docker dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git") - dockerfile := "integration/dockerfiles/Dockerfile_test_run_2" dockerCmd := exec.Command("docker", append([]string{"build", "-t", dockerImage, - "-f", dockerfile, + "-f", dockerfileTestRun, repo})...) out, err := RunCommandWithoutTest(dockerCmd) if err != nil { From e05bdd58f211a4a913f2b3dd829d0be87e348916 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Mon, 23 Dec 2019 09:32:13 +0100 Subject: [PATCH 10/19] fixup! fixup! integration-test: using registry-mirror Signed-off-by: Yoan Blanc --- integration/integration_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/integration/integration_test.go b/integration/integration_test.go index 58ae36901b..cefd296322 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -184,6 +184,7 @@ func TestRun(t *testing.T) { func TestGitBuildcontext(t *testing.T) { repo := "github.com/GoogleContainerTools/kaniko" + dockerfile := dockerfileTestRun // Build with docker dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git") From 3ad9f7d94c52b159b07a59ea8d4d643e711d8341 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Mon, 23 Dec 2019 09:34:32 +0100 Subject: [PATCH 11/19] fixup! fixup! fixup! integration-test: using registry-mirror Signed-off-by: Yoan Blanc --- integration/integration_test.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index cefd296322..f0176d4210 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -227,13 +227,14 @@ func TestGitBuildcontext(t *testing.T) { func TestGitBuildContextWithBranch(t *testing.T) { repo := "github.com/GoogleContainerTools/kaniko#refs/tags/v0.10.0" + dockerfile := dockerfileTestRun // Build with docker dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git") dockerCmd := exec.Command("docker", append([]string{"build", "-t", dockerImage, - "-f", dockerfileTestRun, + "-f", dockerfile, repo})...) out, err := RunCommandWithoutTest(dockerCmd) if err != nil { @@ -272,10 +273,11 @@ func TestBuildViaRegistryMirror(t *testing.T) { // Build with docker dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git") + dockerfile := dockerfileTestRun dockerCmd := exec.Command("docker", append([]string{"build", "-t", dockerImage, - "-f", dockerfileTestRun, + "-f", dockerfile, repo})...) out, err := RunCommandWithoutTest(dockerCmd) if err != nil { From f721212ded2839b82e754e146e7de5382c8c3cf3 Mon Sep 17 00:00:00 2001 From: Tejal Desai Date: Thu, 16 Jan 2020 22:01:47 -0800 Subject: [PATCH 12/19] fix base image link. --- integration/dockerfiles/Dockerfile_test_run_3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration/dockerfiles/Dockerfile_test_run_3 b/integration/dockerfiles/Dockerfile_test_run_3 index 1d48c3e342..8e685de6b3 100644 --- a/integration/dockerfiles/Dockerfile_test_run_3 +++ b/integration/dockerfiles/Dockerfile_test_run_3 @@ -15,6 +15,6 @@ # Test to make sure the executor builds an image correctly # when no files are changed -FROM google-appengine/debian9@sha256:1d6a9a6d106bd795098f60f4abb7083626354fa6735e81743c7f8cfca11259f0 +FROM gcr.io/google-appengine/debian9@sha256:1d6a9a6d106bd795098f60f4abb7083626354fa6735e81743c7f8cfca11259f0 RUN echo "hey" MAINTAINER kaniko From 2a4cb90ea16d45b6877eda6282dbbdb8008000b7 Mon Sep 17 00:00:00 2001 From: Tejal Desai Date: Thu, 16 Jan 2020 22:09:50 -0800 Subject: [PATCH 13/19] remove registry name from dockerfile Rename dockerfile Revert registry name change --- .../{Dockerfile_test_run_3 => Dockerfile_registry_3} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename integration/dockerfiles/{Dockerfile_test_run_3 => Dockerfile_registry_3} (86%) diff --git a/integration/dockerfiles/Dockerfile_test_run_3 b/integration/dockerfiles/Dockerfile_registry_3 similarity index 86% rename from integration/dockerfiles/Dockerfile_test_run_3 rename to integration/dockerfiles/Dockerfile_registry_3 index 8e685de6b3..1d48c3e342 100644 --- a/integration/dockerfiles/Dockerfile_test_run_3 +++ b/integration/dockerfiles/Dockerfile_registry_3 @@ -15,6 +15,6 @@ # Test to make sure the executor builds an image correctly # when no files are changed -FROM gcr.io/google-appengine/debian9@sha256:1d6a9a6d106bd795098f60f4abb7083626354fa6735e81743c7f8cfca11259f0 +FROM google-appengine/debian9@sha256:1d6a9a6d106bd795098f60f4abb7083626354fa6735e81743c7f8cfca11259f0 RUN echo "hey" MAINTAINER kaniko From 20604dff3d50c7f6fdbfef8b92d1c4df3b68769a Mon Sep 17 00:00:00 2001 From: Tejal Desai Date: Thu, 16 Jan 2020 22:12:35 -0800 Subject: [PATCH 14/19] fix integration test --- integration/integration_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index f0176d4210..e93c8a7135 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -286,7 +286,7 @@ func TestBuildViaRegistryMirror(t *testing.T) { // Build with kaniko kanikoImage := GetKanikoImage(config.imageRepo, "Dockerfile_test_git") - dockerfile = "integration/dockerfiles/Dockerfile_test_run_3" + dockerfile = "integration/dockerfiles/Dockerfile_registry_3" kanikoCmd := exec.Command("docker", append([]string{"run", "-v", os.Getenv("HOME") + "/.config/gcloud:/root/.config/gcloud", From a6add78a97229137de7049a035db16c8ab54c6eb Mon Sep 17 00:00:00 2001 From: Tejal Desai Date: Thu, 16 Jan 2020 23:08:22 -0800 Subject: [PATCH 15/19] do not use the git repo as context --- .../{Dockerfile_registry_3 => Dockerfile_registry_mirror} | 0 integration/integration_test.go | 7 ++++--- 2 files changed, 4 insertions(+), 3 deletions(-) rename integration/dockerfiles/{Dockerfile_registry_3 => Dockerfile_registry_mirror} (100%) diff --git a/integration/dockerfiles/Dockerfile_registry_3 b/integration/dockerfiles/Dockerfile_registry_mirror similarity index 100% rename from integration/dockerfiles/Dockerfile_registry_3 rename to integration/dockerfiles/Dockerfile_registry_mirror diff --git a/integration/integration_test.go b/integration/integration_test.go index e93c8a7135..0b92bd81e7 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -286,15 +286,16 @@ func TestBuildViaRegistryMirror(t *testing.T) { // Build with kaniko kanikoImage := GetKanikoImage(config.imageRepo, "Dockerfile_test_git") - dockerfile = "integration/dockerfiles/Dockerfile_registry_3" + dockerfile = "integration/dockerfiles/Dockerfile_registry_mirror" kanikoCmd := exec.Command("docker", append([]string{"run", "-v", os.Getenv("HOME") + "/.config/gcloud:/root/.config/gcloud", - ExecutorImage, + ExecutorImage, "-f", dockerfile, "-d", kanikoImage, "--registry-mirror", "gcr.io", - "-c", fmt.Sprintf("git://%s", repo)})...) + contextFlag, contextPath + "-b", config.gcsBucket)...) out, err = RunCommandWithoutTest(kanikoCmd) if err != nil { From e26bd672f1a22fde66f45ff8c3533573bf96a50e Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Sat, 18 Jan 2020 09:36:22 +0100 Subject: [PATCH 16/19] fixup! Merge remote-tracking branch 'origin/master' into registry-mirror Signed-off-by: Yoan Blanc --- pkg/util/image_util.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/util/image_util.go b/pkg/util/image_util.go index 4308ee81c2..cd84f55540 100644 --- a/pkg/util/image_util.go +++ b/pkg/util/image_util.go @@ -108,7 +108,6 @@ func remoteImage(image string, opts *config.KanikoOptions) (v1.Image, error) { registryName := ref.Context().RegistryStr() var newReg name.Registry - var err error if opts.RegistryMirror != "" && registryName == name.DefaultRegistry { registryName = opts.RegistryMirror From 611ba51c885e07ead948447982af5ccef3f65710 Mon Sep 17 00:00:00 2001 From: Tejal Desai Date: Wed, 29 Jan 2020 11:48:29 -0800 Subject: [PATCH 17/19] fix web editor conflicts resolutions --- integration/integration_test.go | 29 +++++++++++++---------------- pkg/config/options.go | 4 +--- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index 41f92748ca..00f7f65c0a 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -65,7 +65,6 @@ const ( } } ]` - dockerfileTestRun = "integration/dockerfiles/Dockerfile_test_run_2" ) func getDockerMajorVersion() int { @@ -216,7 +215,7 @@ func getGitRepo() string { } return "github.com/GoogleContainerTools/kaniko" } - + func TestGitBuildcontext(t *testing.T) { repo := getGitRepo() dockerfile := "integration/dockerfiles/Dockerfile_test_run_2" @@ -262,11 +261,11 @@ func TestGitBuildcontext(t *testing.T) { } func TestBuildViaRegistryMirror(t *testing.T) { - repo := "github.com/GoogleContainerTools/kaniko" + repo := getGitRepo() + dockerfile := "integration/dockerfiles/Dockerfile_registry_mirror" // Build with docker - dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git") - dockerfile := dockerfileTestRun + dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_registry_mirror") dockerCmd := exec.Command("docker", append([]string{"build", "-t", dockerImage, @@ -278,17 +277,15 @@ func TestBuildViaRegistryMirror(t *testing.T) { } // Build with kaniko - kanikoImage := GetKanikoImage(config.imageRepo, "Dockerfile_test_git") - dockerfile = "integration/dockerfiles/Dockerfile_registry_mirror" - kanikoCmd := exec.Command("docker", - append([]string{"run", - "-v", os.Getenv("HOME") + "/.config/gcloud:/root/.config/gcloud", - ExecutorImage, - "-f", dockerfile, - "-d", kanikoImage, - "--registry-mirror", "gcr.io", - contextFlag, contextPath - "-b", config.gcsBucket)...) + kanikoImage := GetKanikoImage(config.imageRepo, "Dockerfile_registry_mirror") + dockerRunFlags := []string{"run", "--net=host"} + dockerRunFlags = addServiceAccountFlags(dockerRunFlags, config.serviceAccount) + dockerRunFlags = append(dockerRunFlags, ExecutorImage, + "-f", dockerfile, + "-d", kanikoImage, + "-c", fmt.Sprintf("git://%s", repo)) + + kanikoCmd := exec.Command("docker", dockerRunFlags...) out, err = RunCommandWithoutTest(kanikoCmd) if err != nil { diff --git a/pkg/config/options.go b/pkg/config/options.go index 12a77aecad..92ab868e5e 100644 --- a/pkg/config/options.go +++ b/pkg/config/options.go @@ -40,12 +40,10 @@ type KanikoOptions struct { ImageNameDigestFile string OCILayoutPath string RegistryMirror string - InsecureRegistries multiArg + InsecureRegistries multiArg SkipTLSVerifyRegistries multiArg Destinations multiArg BuildArgs multiArg - InsecureRegistries multiArg - SkipTLSVerifyRegistries multiArg Insecure bool SkipTLSVerify bool InsecurePull bool From 3cd216f75bc120dcbd6d2fa92abde11f49319abf Mon Sep 17 00:00:00 2001 From: Tejal Desai Date: Thu, 30 Jan 2020 15:37:10 -0800 Subject: [PATCH 18/19] add the registry mirror flag --- integration/integration_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/integration/integration_test.go b/integration/integration_test.go index 00f7f65c0a..320190cbbf 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -283,6 +283,7 @@ func TestBuildViaRegistryMirror(t *testing.T) { dockerRunFlags = append(dockerRunFlags, ExecutorImage, "-f", dockerfile, "-d", kanikoImage, + "--registry-mirror", "gcr.io", "-c", fmt.Sprintf("git://%s", repo)) kanikoCmd := exec.Command("docker", dockerRunFlags...) From 474fdcf68d099d2780378372a8da4faac0750db2 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Sun, 16 Feb 2020 10:47:07 +0100 Subject: [PATCH 19/19] image: fix registry mirror setup Signed-off-by: Yoan Blanc --- integration/dockerfiles/Dockerfile_registry_mirror | 4 ++-- integration/integration_test.go | 4 ++-- pkg/config/options.go | 4 ++-- pkg/util/image_util.go | 7 ++++++- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/integration/dockerfiles/Dockerfile_registry_mirror b/integration/dockerfiles/Dockerfile_registry_mirror index 1d48c3e342..9791923543 100644 --- a/integration/dockerfiles/Dockerfile_registry_mirror +++ b/integration/dockerfiles/Dockerfile_registry_mirror @@ -15,6 +15,6 @@ # Test to make sure the executor builds an image correctly # when no files are changed -FROM google-appengine/debian9@sha256:1d6a9a6d106bd795098f60f4abb7083626354fa6735e81743c7f8cfca11259f0 -RUN echo "hey" +FROM library/debian:latest +RUN echo "hey" MAINTAINER kaniko diff --git a/integration/integration_test.go b/integration/integration_test.go index 33c5f71c12..558a1c53f3 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -229,7 +229,7 @@ func getGitRepo() string { } else { branch = os.Getenv("TRAVIS_BRANCH") repoSlug = os.Getenv("TRAVIS_REPO_SLUG") - log.Printf("Travis CI pepo: %s branch: %s\n", repoSlug, branch) + log.Printf("Travis CI repo: %s branch: %s\n", repoSlug, branch) } return "github.com/" + repoSlug + "#refs/heads/" + branch } @@ -303,7 +303,7 @@ func TestBuildViaRegistryMirror(t *testing.T) { dockerRunFlags = append(dockerRunFlags, ExecutorImage, "-f", dockerfile, "-d", kanikoImage, - "--registry-mirror", "gcr.io", + "--registry-mirror", "us-mirror.gcr.io", "-c", fmt.Sprintf("git://%s", repo)) kanikoCmd := exec.Command("docker", dockerRunFlags...) diff --git a/pkg/config/options.go b/pkg/config/options.go index 92ab868e5e..bf34f3b5cc 100644 --- a/pkg/config/options.go +++ b/pkg/config/options.go @@ -40,10 +40,10 @@ type KanikoOptions struct { ImageNameDigestFile string OCILayoutPath string RegistryMirror string - InsecureRegistries multiArg - SkipTLSVerifyRegistries multiArg Destinations multiArg BuildArgs multiArg + InsecureRegistries multiArg + SkipTLSVerifyRegistries multiArg Insecure bool SkipTLSVerify bool InsecurePull bool diff --git a/pkg/util/image_util.go b/pkg/util/image_util.go index 1e0a2a021c..9f1e68e51d 100644 --- a/pkg/util/image_util.go +++ b/pkg/util/image_util.go @@ -108,6 +108,7 @@ func remoteImage(image string, opts *config.KanikoOptions) (v1.Image, error) { registryName := ref.Context().RegistryStr() var newReg name.Registry + toSet := false if opts.RegistryMirror != "" && registryName == name.DefaultRegistry { registryName = opts.RegistryMirror @@ -116,6 +117,8 @@ func remoteImage(image string, opts *config.KanikoOptions) (v1.Image, error) { if err != nil { return nil, err } + + toSet = true } if opts.InsecurePull || opts.InsecureRegistries.Contains(registryName) { @@ -123,9 +126,11 @@ func remoteImage(image string, opts *config.KanikoOptions) (v1.Image, error) { if err != nil { return nil, err } + + toSet = true } - if newReg != ref.Context().Registry { + if toSet { if tag, ok := ref.(name.Tag); ok { tag.Repository.Registry = newReg ref = tag