From 057e360c5b56472aa54021ac02af0b9265aceca7 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Tue, 12 Mar 2019 22:59:32 +0000 Subject: [PATCH 01/17] Update README.md Signed-off-by: Mikolaj Pawlikowski --- README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5d485c5..515466a 100644 --- a/README.md +++ b/README.md @@ -38,11 +38,20 @@ If you'd like to know more, you can watch [our presentation at Kubecon 2018 Seat ## Quick start +Getting from sources: + ```sh go get github.com/bloomberg/goldpinger/cmd/goldpinger goldpinger --help ``` +Getting from [docker hub](https://hub.docker.com/r/bloomberg/goldpinger): + +```sh +# get from docker hub +docker pull bloomberg/goldpinger +``` + Note, that in order to guarantee correct versions of dependencies, the project [uses `dep`](./Makefile). @@ -105,8 +114,6 @@ namespace="docker.io/myhandle/" make push Here's an example of what you can do (using the in-cluster authentication to `Kubernetes` apiserver). -:warning: Replace `docker.io/mynamespace-replaceme/goldpinger:1.0.0` with the actual tag you built. - ```yaml --- apiVersion: apps/v1 @@ -138,7 +145,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: "docker.io/mynamespace-replaceme/goldpinger:1.0.0" + image: "docker.io/bloomberg/goldpinger:1.4.0" ports: - containerPort: 80 name: http From 8182369c02fbf7879e663838927ceb95d77b9183 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Tue, 12 Mar 2019 23:07:29 +0000 Subject: [PATCH 02/17] Update example-serviceaccounts.yml Signed-off-by: Mikolaj Pawlikowski --- extras/example-serviceaccounts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/example-serviceaccounts.yml b/extras/example-serviceaccounts.yml index e6c4b81..776ef6c 100644 --- a/extras/example-serviceaccounts.yml +++ b/extras/example-serviceaccounts.yml @@ -38,7 +38,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: "docker.io/mynamespace-replaceme/goldpinger:1.1.0" + image: "docker.io/bloomberg/goldpinger:1.4.0" ports: - containerPort: 80 name: http From 6cd12ef2d55d056633f354c2e140fd75cdfc9f15 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Tue, 12 Mar 2019 23:07:54 +0000 Subject: [PATCH 03/17] Update example-with-kubeconfig.yaml Signed-off-by: Mikolaj Pawlikowski --- extras/example-with-kubeconfig.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/example-with-kubeconfig.yaml b/extras/example-with-kubeconfig.yaml index 08b9e7c..a28b499 100644 --- a/extras/example-with-kubeconfig.yaml +++ b/extras/example-with-kubeconfig.yaml @@ -43,7 +43,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: "docker.io/mynamespace-replaceme/goldpinger:1.1.0" + image: "docker.io/bloomberg/goldpinger:1.4.0" ports: - containerPort: 80 name: http From 6de72deee0d49448dc0fab0218341b3ca71354a6 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 13:59:43 +0000 Subject: [PATCH 04/17] When building multi-stage, copy over the vendor folder for licensing reasons Signed-off-by: Mikolaj Pawlikowski --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index ad64b84..651e40c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,6 +20,8 @@ RUN make bin/goldpinger FROM scratch COPY --from=builder /go/src/github.com/bloomberg/goldpinger/bin/goldpinger /goldpinger +# for lincensing reasons, we include all sources going into the binary +COPY --from=builder /go/src/github.com/bloomberg/goldpinger/vendor /goldpinger-vendor-sources COPY ./static /static ENTRYPOINT ["/goldpinger", "--static-file-path", "/static"] From bf43dcff9873b6af0979f6163bb929e082b33a6c Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 14:13:17 +0000 Subject: [PATCH 05/17] remove the vendor from the standard build Signed-off-by: Mikolaj Pawlikowski --- Dockerfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 651e40c..192961c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,8 +20,5 @@ RUN make bin/goldpinger FROM scratch COPY --from=builder /go/src/github.com/bloomberg/goldpinger/bin/goldpinger /goldpinger -# for lincensing reasons, we include all sources going into the binary -COPY --from=builder /go/src/github.com/bloomberg/goldpinger/vendor /goldpinger-vendor-sources COPY ./static /static -ENTRYPOINT ["/goldpinger", "--static-file-path", "/static"] - +ENTRYPOINT ["/goldpinger", "--static-file-path", "/static"] \ No newline at end of file From 86ddcf9505af83cc15b795f605fda56d4ed3a118 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 14:26:28 +0000 Subject: [PATCH 06/17] push an additional image with -vendor postfix with all the sources For licensing reasons. Signed-off-by: Mikolaj Pawlikowski --- Dockerfile-vendor | 30 ++++++++++++++++++++++++++++++ Makefile | 13 ++++++++++++- docker_deploy.sh | 7 ++++++- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 Dockerfile-vendor diff --git a/Dockerfile-vendor b/Dockerfile-vendor new file mode 100644 index 0000000..d967239 --- /dev/null +++ b/Dockerfile-vendor @@ -0,0 +1,30 @@ +# This is mirrors the 'normal' Dockerfile, with an extra step, in which we copy all the vendor data to the output image. +# This is done for licensing reasons. + +FROM golang:1.11-alpine as builder + +# Install our build tools + +RUN apk add --update git make bash +RUN go get -u github.com/golang/dep/cmd/dep + +# Get dependencies + +WORKDIR /go/src/github.com/bloomberg/goldpinger +COPY Gopkg.toml Gopkg.lock Makefile ./ +RUN make vendor + +# Build goldpinger + +COPY . ./ +RUN make bin/goldpinger + +# Build the asset container, copy over goldpinger + +FROM scratch +COPY --from=builder /go/src/github.com/bloomberg/goldpinger/bin/goldpinger /goldpinger + +# for licensing reasons, we include all sources going into the binary +COPY --from=builder /go/src/github.com/bloomberg/goldpinger/vendor /goldpinger-vendor-sources +COPY ./static /static +ENTRYPOINT ["/goldpinger", "--static-file-path", "/static"] diff --git a/Makefile b/Makefile index e60c60e..46d5602 100644 --- a/Makefile +++ b/Makefile @@ -42,4 +42,15 @@ run: version: @echo $(tag) -.PHONY: clean vendor swagger build build-multistage tag push run version + +vendor-build: + docker build -t $(tag)-vendor -f ./Dockerfile-vendor . + +vendor-tag: + docker tag $(tag)-vendor $(namespace)$(tag)-vendor + +vendor-push: + docker push $(namespace)$(tag)-vendor + + +.PHONY: clean vendor swagger build build-multistage vendor-build vendor-tag vendor-push tag push run version diff --git a/docker_deploy.sh b/docker_deploy.sh index b3987dd..9fefe46 100755 --- a/docker_deploy.sh +++ b/docker_deploy.sh @@ -1,4 +1,9 @@ #!/bin/sh -docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD" && make tag && make push +docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD" \ + && make tag \ + && make push \ + && make vendor-build \ + && make vendor-tag \ + && make vendor-push From b7c1d2dfb457c203102b4cdbe39870647206c4d1 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 14:29:54 +0000 Subject: [PATCH 07/17] add extra info in README, about the `-vendor` image tag Signed-off-by: Mikolaj Pawlikowski --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 28635d8..b36fe7f 100644 --- a/README.md +++ b/README.md @@ -254,3 +254,5 @@ Before you create that PR, please make sure you read [CONTRIBUTING](./CONTRIBUTI ## License Please read the [LICENSE](./LICENSE) file here. + +For each version built by travis, there is also an additional version, appended with `-vendor`, which contains all source code of the dependencies used in `goldpinger`. From bd13d4d6738290f89c148de38a68ed4f3f7d4dc1 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 14:43:09 +0000 Subject: [PATCH 08/17] simplify the vendor building, make it build it with every Travis run Signed-off-by: Mikolaj Pawlikowski --- .travis.yml | 5 +++++ Dockerfile-vendor | 30 ------------------------------ Makefile | 2 +- build/Dockerfile-vendor | 3 +++ docker_deploy.sh | 1 - 5 files changed, 9 insertions(+), 32 deletions(-) delete mode 100644 Dockerfile-vendor create mode 100644 build/Dockerfile-vendor diff --git a/.travis.yml b/.travis.yml index e5cbde6..f9fc269 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,11 @@ script: - docker images - docker run `make version` --help + # build an image with the vendor folder + - make clean && make vendor && make vendor-build + - docker images + - docker run `make version`-vendor --help + deploy: provider: script script: bash docker_deploy.sh diff --git a/Dockerfile-vendor b/Dockerfile-vendor deleted file mode 100644 index d967239..0000000 --- a/Dockerfile-vendor +++ /dev/null @@ -1,30 +0,0 @@ -# This is mirrors the 'normal' Dockerfile, with an extra step, in which we copy all the vendor data to the output image. -# This is done for licensing reasons. - -FROM golang:1.11-alpine as builder - -# Install our build tools - -RUN apk add --update git make bash -RUN go get -u github.com/golang/dep/cmd/dep - -# Get dependencies - -WORKDIR /go/src/github.com/bloomberg/goldpinger -COPY Gopkg.toml Gopkg.lock Makefile ./ -RUN make vendor - -# Build goldpinger - -COPY . ./ -RUN make bin/goldpinger - -# Build the asset container, copy over goldpinger - -FROM scratch -COPY --from=builder /go/src/github.com/bloomberg/goldpinger/bin/goldpinger /goldpinger - -# for licensing reasons, we include all sources going into the binary -COPY --from=builder /go/src/github.com/bloomberg/goldpinger/vendor /goldpinger-vendor-sources -COPY ./static /static -ENTRYPOINT ["/goldpinger", "--static-file-path", "/static"] diff --git a/Makefile b/Makefile index 46d5602..49ccfec 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ version: vendor-build: - docker build -t $(tag)-vendor -f ./Dockerfile-vendor . + docker build -t $(tag)-vendor --build-arg TAG=$(tag) -f ./build/Dockerfile-vendor . vendor-tag: docker tag $(tag)-vendor $(namespace)$(tag)-vendor diff --git a/build/Dockerfile-vendor b/build/Dockerfile-vendor new file mode 100644 index 0000000..ef05e31 --- /dev/null +++ b/build/Dockerfile-vendor @@ -0,0 +1,3 @@ +ARG TAG +FROM $TAG +COPY ./vendor /goldpinger-vendor-sources diff --git a/docker_deploy.sh b/docker_deploy.sh index 9fefe46..b1a33b9 100755 --- a/docker_deploy.sh +++ b/docker_deploy.sh @@ -3,7 +3,6 @@ docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD" \ && make tag \ && make push \ - && make vendor-build \ && make vendor-tag \ && make vendor-push From 8b1dd49506dafdd28f896755e5edbdbe308179af Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 15:46:22 +0000 Subject: [PATCH 09/17] fix the path to copy vendor folder from Signed-off-by: Mikolaj Pawlikowski --- build/Dockerfile-vendor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile-vendor b/build/Dockerfile-vendor index ef05e31..73d6277 100644 --- a/build/Dockerfile-vendor +++ b/build/Dockerfile-vendor @@ -1,3 +1,3 @@ ARG TAG FROM $TAG -COPY ./vendor /goldpinger-vendor-sources +COPY ../vendor /goldpinger-vendor-sources From 7b156add7213ed7e59ce0a9af677e31a4452c57d Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 15:53:24 +0000 Subject: [PATCH 10/17] Revert "fix the path to copy vendor folder from" This reverts commit 8b1dd49506dafdd28f896755e5edbdbe308179af. Signed-off-by: Mikolaj Pawlikowski --- build/Dockerfile-vendor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile-vendor b/build/Dockerfile-vendor index 73d6277..ef05e31 100644 --- a/build/Dockerfile-vendor +++ b/build/Dockerfile-vendor @@ -1,3 +1,3 @@ ARG TAG FROM $TAG -COPY ../vendor /goldpinger-vendor-sources +COPY ./vendor /goldpinger-vendor-sources From 3ce0c46f91e0a3ea22a9685bdd46f70fad275aee Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 16:15:13 +0000 Subject: [PATCH 11/17] consistenly use COPY over ADD Signed-off-by: Mikolaj Pawlikowski --- build/Dockerfile-simple | 4 ++-- build/Dockerfile-vendor | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/Dockerfile-simple b/build/Dockerfile-simple index f3a9ae5..3c6807a 100644 --- a/build/Dockerfile-simple +++ b/build/Dockerfile-simple @@ -1,6 +1,6 @@ FROM scratch -ADD bin/goldpinger /goldpinger -COPY ./static /static +COPY bin/goldpinger /goldpinger +COPY static /static ENTRYPOINT ["/goldpinger", "--static-file-path", "/static"] diff --git a/build/Dockerfile-vendor b/build/Dockerfile-vendor index ef05e31..cde12a1 100644 --- a/build/Dockerfile-vendor +++ b/build/Dockerfile-vendor @@ -1,3 +1,3 @@ ARG TAG FROM $TAG -COPY ./vendor /goldpinger-vendor-sources +COPY vendor /goldpinger-vendor-sources From 9040b69933b7db84c3972e5ed8f433c7187ee6f4 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 16:23:17 +0000 Subject: [PATCH 12/17] debug the make vendor-build target Signed-off-by: Mikolaj Pawlikowski --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f9fc269..784b10f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ script: - docker run `make version` --help # build an image with the vendor folder - - make clean && make vendor && make vendor-build + - make clean && make vendor && pwd && ls -al && make vendor-build - docker images - docker run `make version`-vendor --help From 52ea5546aa7c10a90c9519db538648c30d175f8e Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 16:41:12 +0000 Subject: [PATCH 13/17] debugging Travis - see if the ARG makes a difference Signed-off-by: Mikolaj Pawlikowski --- build/Dockerfile-vendor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile-vendor b/build/Dockerfile-vendor index cde12a1..fc24889 100644 --- a/build/Dockerfile-vendor +++ b/build/Dockerfile-vendor @@ -1,3 +1,3 @@ ARG TAG -FROM $TAG +FROM goldpinger:1.4.0 COPY vendor /goldpinger-vendor-sources From 28af41e352a5ee522ee3272f625cda488e53af5b Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 16:47:08 +0000 Subject: [PATCH 14/17] Revert "debugging Travis - see if the ARG makes a difference" This reverts commit 52ea5546aa7c10a90c9519db538648c30d175f8e. Signed-off-by: Mikolaj Pawlikowski --- build/Dockerfile-vendor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile-vendor b/build/Dockerfile-vendor index fc24889..cde12a1 100644 --- a/build/Dockerfile-vendor +++ b/build/Dockerfile-vendor @@ -1,3 +1,3 @@ ARG TAG -FROM goldpinger:1.4.0 +FROM $TAG COPY vendor /goldpinger-vendor-sources From 369e9ece783769498592c1886c780650146671b1 Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 16:47:48 +0000 Subject: [PATCH 15/17] add slashes for the folders to copy Signed-off-by: Mikolaj Pawlikowski --- build/Dockerfile-vendor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile-vendor b/build/Dockerfile-vendor index cde12a1..f7539a9 100644 --- a/build/Dockerfile-vendor +++ b/build/Dockerfile-vendor @@ -1,3 +1,3 @@ ARG TAG FROM $TAG -COPY vendor /goldpinger-vendor-sources +COPY vendor/ /goldpinger-vendor-sources/ From 87792cffcab11a68f98354d407163f0bd52d25cc Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 16:52:23 +0000 Subject: [PATCH 16/17] turns out vendor folder I tried to copy was in gitignore and Travis won't pick it up Signed-off-by: Mikolaj Pawlikowski --- .dockerignore | 1 - build/Dockerfile-vendor | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index 38af8d6..2d2ecd6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1 @@ .git/ -/vendor/ diff --git a/build/Dockerfile-vendor b/build/Dockerfile-vendor index f7539a9..cde12a1 100644 --- a/build/Dockerfile-vendor +++ b/build/Dockerfile-vendor @@ -1,3 +1,3 @@ ARG TAG FROM $TAG -COPY vendor/ /goldpinger-vendor-sources/ +COPY vendor /goldpinger-vendor-sources From 32823fd10521f8c32710514d464891e7e688612f Mon Sep 17 00:00:00 2001 From: Mikolaj Pawlikowski Date: Wed, 13 Mar 2019 16:58:42 +0000 Subject: [PATCH 17/17] remove the ls and pwd artifacts Signed-off-by: Mikolaj Pawlikowski --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 784b10f..f9fc269 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ script: - docker run `make version` --help # build an image with the vendor folder - - make clean && make vendor && pwd && ls -al && make vendor-build + - make clean && make vendor && make vendor-build - docker images - docker run `make version`-vendor --help