From da4dfb3fdf2dea1237433f0157b633a6404ee50a Mon Sep 17 00:00:00 2001 From: Yusuke Kuoka Date: Wed, 31 Mar 2021 09:23:16 +0900 Subject: [PATCH] Add make target `test-with-deps` to ease setting up dependent binaries (#426) --- Makefile | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/Makefile b/Makefile index 786626f6..96497f7f 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,8 @@ else GOBIN=$(shell go env GOBIN) endif +TEST_ASSETS=$(PWD)/test-assets + # default list of platforms for which multiarch image is built ifeq (${PLATFORMS}, ) export PLATFORMS="linux/amd64,linux/arm64" @@ -37,6 +39,13 @@ all: manager test: generate fmt vet manifests go test ./... -coverprofile cover.out +test-with-deps: kube-apiserver etcd kubectl + # See https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/envtest#pkg-constants + TEST_ASSET_KUBE_APISERVER=$(KUBE_APISERVER_BIN) \ + TEST_ASSET_ETCD=$(ETCD_BIN) \ + TEST_ASSET_KUBECTL=$(KUBECTL_BIN) \ + make test + # Build manager binary manager: generate fmt vet go build -o bin/manager main.go @@ -191,3 +200,66 @@ ifeq (, $(wildcard $(GOBIN)/yq)) } endif YQ=$(GOBIN)/yq + +OS_NAME := $(shell uname -s | tr A-Z a-z) + +# find or download etcd +etcd: +ifeq (, $(wildcard $(TEST_ASSETS)/etcd)) + @{ \ + set -xe ;\ + INSTALL_TMP_DIR=$$(mktemp -d) ;\ + cd $$INSTALL_TMP_DIR ;\ + wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.2/kubebuilder_2.3.2_$(OS_NAME)_amd64.tar.gz ;\ + mkdir -p $(TEST_ASSETS) ;\ + tar zxvf kubebuilder_2.3.2_$(OS_NAME)_amd64.tar.gz ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/etcd $(TEST_ASSETS)/etcd ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/kube-apiserver $(TEST_ASSETS)/kube-apiserver ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/kubectl $(TEST_ASSETS)/kubectl ;\ + rm -rf $$INSTALL_TMP_DIR ;\ + } +ETCD_BIN=$(TEST_ASSETS)/etcd +else +ETCD_BIN=$(TEST_ASSETS)/etcd +endif + +# find or download kube-apiserver +kube-apiserver: +ifeq (, $(wildcard $(TEST_ASSETS)/kube-apiserver)) + @{ \ + set -xe ;\ + INSTALL_TMP_DIR=$$(mktemp -d) ;\ + cd $$INSTALL_TMP_DIR ;\ + wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.2/kubebuilder_2.3.2_$(OS_NAME)_amd64.tar.gz ;\ + mkdir -p $(TEST_ASSETS) ;\ + tar zxvf kubebuilder_2.3.2_$(OS_NAME)_amd64.tar.gz ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/etcd $(TEST_ASSETS)/etcd ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/kube-apiserver $(TEST_ASSETS)/kube-apiserver ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/kubectl $(TEST_ASSETS)/kubectl ;\ + rm -rf $$INSTALL_TMP_DIR ;\ + } +KUBE_APISERVER_BIN=$(TEST_ASSETS)/kube-apiserver +else +KUBE_APISERVER_BIN=$(TEST_ASSETS)/kube-apiserver +endif + + +# find or download kubectl +kubectl: +ifeq (, $(wildcard $(TEST_ASSETS)/kubectl)) + @{ \ + set -xe ;\ + INSTALL_TMP_DIR=$$(mktemp -d) ;\ + cd $$INSTALL_TMP_DIR ;\ + wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.2/kubebuilder_2.3.2_$(OS_NAME)_amd64.tar.gz ;\ + mkdir -p $(TEST_ASSETS) ;\ + tar zxvf kubebuilder_2.3.2_$(OS_NAME)_amd64.tar.gz ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/etcd $(TEST_ASSETS)/etcd ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/kube-apiserver $(TEST_ASSETS)/kube-apiserver ;\ + mv kubebuilder_2.3.2_$(OS_NAME)_amd64/bin/kubectl $(TEST_ASSETS)/kubectl ;\ + rm -rf $$INSTALL_TMP_DIR ;\ + } +KUBECTL_BIN=$(TEST_ASSETS)/kubectl +else +KUBECTL_BIN=$(TEST_ASSETS)/kubectl +endif