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