github.com/docker/compose-on-kubernetes@v0.5.0/docker.Makefile (about) 1 include common.mk 2 3 export BUILD_BASE_IMAGE = golang:1.16.13-alpine3.14 4 export TEST_BASE_IMAGE = golang:1.16.13 5 export RUN_BASE_IMAGE = alpine:3.14 6 export KUBERNETES_VERSION ?= 1.16.1 7 KIND_VERSION ?= 0.5.1 8 IMAGES = ${IMAGE_REPO_PREFIX}controller ${IMAGE_REPO_PREFIX}controller-coverage ${IMAGE_REPO_PREFIX}e2e-tests ${IMAGE_REPO_PREFIX}e2e-benchmark ${IMAGE_REPO_PREFIX}api-server ${IMAGE_REPO_PREFIX}api-server-coverage ${IMAGE_REPO_PREFIX}installer 9 PUSH_IMAGES = push/${IMAGE_REPO_PREFIX}controller push/${IMAGE_REPO_PREFIX}api-server push/${IMAGE_REPO_PREFIX}installer 10 DOCKERFILE = Dockerfile 11 ifneq ($(DOCKER_BUILDKIT),) 12 override DOCKERFILE := Dockerfile.buildkit 13 endif 14 15 BUILD_ARGS = \ 16 --build-arg BUILD_BASE=${BUILD_BASE_IMAGE} \ 17 --build-arg RUN_BASE=${RUN_BASE_IMAGE} \ 18 --build-arg BUILDTIME \ 19 --build-arg GITCOMMIT \ 20 --build-arg VERSION \ 21 --build-arg KUBERNETES_VERSION \ 22 --build-arg IMAGE_REPO_PREFIX \ 23 --build-arg GOPROXY 24 25 build-validate-image: ## create the image used for validation 26 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e dockerfiles scripts gometalinter.json Gopkg.toml Gopkg.lock .git | docker build --build-arg BUILD_BASE=${BUILD_BASE_IMAGE} -t kube-compose-validate -f ./dockerfiles/Dockerfile.dev --target lint - 27 28 build-vendor-image: 29 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal e2e dockerfiles scripts gometalinter.json Gopkg.toml Gopkg.lock .git | docker build --build-arg BUILD_BASE=${BUILD_BASE_IMAGE} -t kube-compose-vendor -f ./dockerfiles/Dockerfile.dev --target dev - 30 31 validate: validate-lint validate-pkg validate-vendor ## validate lint and package dependencies 32 33 validate-lint: build-validate-image ## linter 34 docker run -ti --rm kube-compose-validate 35 36 validate-pkg: build-validate-image ## validate that no public package used in the CLI depends on internal stuff 37 docker run -ti --rm --entrypoint=/bin/bash kube-compose-validate ./scripts/validate-pkg 38 39 validate-vendor: build-vendor-image 40 docker run -ti --rm -v kube-compose-vendor-cache://dep-cache -e DEPCACHEDIR=//dep-cache kube-compose-vendor make validate-vendor 41 42 vendor: build-vendor-image 43 $(info Update Vendoring...) 44 docker rm -f kube-compose-vendoring || true 45 # git bash, mingw and msys by default rewrite args that seems to be linux paths and try to expand that to a meaningful windows path 46 # we don't want that to happen when mounting paths referring to files located in the container. Thus we use the double "//" prefix that works 47 # both on windows, linux and macos 48 docker run -it --name kube-compose-vendoring -v kube-compose-vendor-cache://dep-cache -e DEPCACHEDIR=//dep-cache kube-compose-vendor sh -c "make vendor DEP_ARGS=\"$(DEP_ARGS)\"" 49 rm -rf ./vendor 50 docker cp kube-compose-vendoring:/go/src/github.com/docker/compose-on-kubernetes/vendor . 51 docker cp kube-compose-vendoring:/go/src/github.com/docker/compose-on-kubernetes/Gopkg.lock . 52 docker rm -f kube-compose-vendoring 53 $(warning You may need to reset permissions on vendor/*) 54 55 ${IMAGE_REPO_PREFIX}e2e-tests: 56 @echo "🌟 build ${IMAGE_REPO_PREFIX}e2e-tests:${TAG}" 57 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e | docker build ${BUILD_ARGS} -t ${IMAGE_REPO_PREFIX}e2e-tests:$(TAG) --target compose-e2e-tests -f ${DOCKERFILE} - 58 59 ${IMAGE_REPO_PREFIX}e2e-benchmark: 60 @echo "🌟 build ${IMAGE_REPO_PREFIX}e2e-benchmark:${TAG}" 61 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e | docker build ${BUILD_ARGS} -t ${IMAGE_REPO_PREFIX}e2e-benchmark:$(TAG) --target compose-e2e-benchmark -f ${DOCKERFILE} - 62 63 ${IMAGE_REPO_PREFIX}api-server: 64 @echo "🌟 build ${IMAGE_REPO_PREFIX}api-server:${TAG}" 65 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e | docker build ${BUILD_ARGS} -t ${IMAGE_REPO_PREFIX}api-server:$(TAG) --target compose-api-server -f ${DOCKERFILE} - 66 67 ${IMAGE_REPO_PREFIX}api-server-coverage: 68 @echo "🌟 build ${IMAGE_REPO_PREFIX}api-server-coverage:${TAG}" 69 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e | docker build ${BUILD_ARGS} -t ${IMAGE_REPO_PREFIX}api-server-coverage:$(TAG) --target compose-api-server-coverage -f ${DOCKERFILE} - 70 71 ${IMAGE_REPO_PREFIX}controller: 72 @echo "🌟 build ${IMAGE_REPO_PREFIX}controller:${TAG}" 73 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e | docker build ${BUILD_ARGS} -t ${IMAGE_REPO_PREFIX}controller:$(TAG) -f ${DOCKERFILE} - 74 75 ${IMAGE_REPO_PREFIX}controller-coverage: 76 @echo "🌟 build ${IMAGE_REPO_PREFIX}controller-coverage:${TAG}" 77 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e | docker build ${BUILD_ARGS} -t ${IMAGE_REPO_PREFIX}controller-coverage:$(TAG) --target compose-controller-coverage -f ${DOCKERFILE} - 78 79 ${IMAGE_REPO_PREFIX}installer: 80 @echo "🌟 build ${IMAGE_REPO_PREFIX}installer:${TAG}" 81 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e | docker build ${BUILD_ARGS} -t ${IMAGE_REPO_PREFIX}installer:$(TAG) --target compose-installer -f ${DOCKERFILE} - 82 83 images: $(IMAGES) ## build images 84 @echo $(IMAGES) 85 86 save-coverage-images: 87 @echo "🌟 save ${IMAGE_REPO_PREFIX}api-server-coverage:$(TAG) ${IMAGE_REPO_PREFIX}controller-coverage:$(TAG)" 88 @mkdir -p pre-loaded-images 89 @docker save -o pre-loaded-images/coverage-enabled-images.tar ${IMAGE_REPO_PREFIX}api-server-coverage:$(TAG) ${IMAGE_REPO_PREFIX}controller-coverage:$(TAG) 90 91 install-kind: 92 ifeq (,$(wildcard ./~/bin/kind)) 93 curl -fLo ~/bin/kind --create-dirs https://github.com/kubernetes-sigs/kind/releases/download/v$(KIND_VERSION)/kind-$$(uname)-amd64 94 chmod +x ~/bin/kind 95 endif 96 97 create-kind-cluster: install-kind 98 @echo "🌟 Create kind cluster" 99 @kind create cluster --name compose-on-kube --image kindest/node:v$(KUBERNETES_VERSION) 100 101 load-kind-image-archive: 102 @echo "🌟 Load archive $(IMAGE_ARCHIVE) in kind cluster" 103 @kind load image-archive --name compose-on-kube $(IMAGE_ARCHIVE) 104 105 delete-kind-cluster: 106 @echo "🌟 Delete kind cluster" 107 kind delete cluster --name compose-on-kube 108 109 push/%: 110 @echo "🌟 push $@ ($*:$(TAG))" 111 @docker push "$*:$(TAG)" 112 113 push: $(PUSH_IMAGES) ## push images 114 @echo $(PUSH_IMAGES) 115 116 install: ${IMAGE_REPO_PREFIX}installer ## install compose kubernetes component 117 @echo "🌟 installing compose" 118 @docker run --net=host --rm -v ~/.kube/config:/root/.kube/config ${IMAGE_REPO_PREFIX}installer -etcd-servers http://127.0.0.1:2379 -network-host 119 120 uninstall: ${IMAGE_REPO_PREFIX}installer ## uninstall compose kubernetes component 121 @echo "🌟 uninstalling compose" 122 @docker run --net=host --rm -v ~/.kube/config:/root/.kube/config ${IMAGE_REPO_PREFIX}installer -uninstall 123 124 help: ## this help 125 @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z0-9_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | sort 126 127 test-unit: 128 @tar cf - ${DOCKERFILE} doc.go Makefile common.mk cmd install api internal vendor e2e dockerfiles/Dockerfile.test | docker build -t docker/kube-compose-unit-test-base --build-arg TEST_BASE=$(TEST_BASE_IMAGE) -f dockerfiles/Dockerfile.test - 129 docker rm -f kube-compose-unit-test || exit 0 130 docker create --name kube-compose-unit-test docker/kube-compose-unit-test-base 131 @docker cp kube-compose-unit-test:/go/src/github.com/docker/compose-on-kubernetes/coverage.txt ./coverage.txt 132 docker rm -f kube-compose-unit-test