From 0af7588a9ea61499341d776e75d0e7645deb8cb0 Mon Sep 17 00:00:00 2001 From: shreddedbacon Date: Tue, 30 Apr 2024 09:21:28 +1000 Subject: [PATCH 1/2] test: add gh action --- .github/workflows/test-suite.yaml | 31 +++++++++++++++++++++++++++++++ Makefile | 25 +++++++++++++++++++++---- kind-config.yaml | 2 -- 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/test-suite.yaml diff --git a/.github/workflows/test-suite.yaml b/.github/workflows/test-suite.yaml new file mode 100644 index 0000000..cdc8eb9 --- /dev/null +++ b/.github/workflows/test-suite.yaml @@ -0,0 +1,31 @@ +name: DBaaS controller tests + +on: pull_request + +jobs: + test-suite: + runs-on: ubuntu-latest + strategy: + fail-fast: false + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: "0" + + - name: Configure kind network + run: | + docker network create kind + + - name: Create kind cluster + uses: helm/kind-action@v1.9.0 + with: + version: v0.22.0 + node_image: kindest/node:v1.28.7@sha256:9bc6c451a289cf96ad0bbaf33d416901de6fd632415b076ab05f5fa7e4f65c58 + kubectl_version: v1.28.7 + cluster_name: kind + config: kind-config.yaml + + - name: Run github/test-e2e + run: make github/test-e2e diff --git a/Makefile b/Makefile index 79934b0..be90b53 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,8 @@ else GOBIN=$(shell go env GOBIN) endif +KIND_CLUSTER = kind + # CONTAINER_TOOL defines the container tool to be used for building images. # Be aware that the target commands are only tested with Docker which is # scaffolded by default. However, you might want to replace it to use other @@ -64,10 +66,25 @@ vet: ## Run go vet against code. test: manifests generate fmt vet envtest ## Run tests. KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test $$(go list ./... | grep -v /e2e) -coverprofile cover.out +.PHONY: create-kind-cluster +create-kind-cluster: + docker network inspect $(KIND_CLUSTER) >/dev/null || docker network create $(KIND_CLUSTER) + kind create cluster --wait=60s --name=$(KIND_CLUSTER) --config=kind-config.yaml + +.PHONY: delete-kind-cluster +delete-kind-cluster: + kind delete cluster --name=$(KIND_CLUSTER) && docker network rm $(KIND_CLUSTER) + # Utilize Kind or modify the e2e tests to load the image locally, enabling compatibility with other vendors. -.PHONY: test-e2e # Run the e2e tests against a Kind k8s instance that is spun up. -test-e2e: - kind export kubeconfig --name=kind +.PHONY: github/test-e2e # Run the e2e tests against a Kind k8s instance that is spun up inside github action. +github/test-e2e: + go test ./test/e2e/ -v -ginkgo.v + +# Create a kind cluster locally and run the test e2e test suite against it +.PHONY: local-kind/test-e2e # Run the e2e tests against a Kind k8s instance that is spun up locally +local-kind/test-e2e: create-kind-cluster + export KIND_CLUSTER=$(KIND_CLUSTER) && \ + kind export kubeconfig --name=$(KIND_CLUSTER) && \ go test ./test/e2e/ -v -ginkgo.v .PHONY: lint @@ -201,4 +218,4 @@ echo "Downloading $${package}" ;\ GOBIN=$(LOCALBIN) go install $${package} ;\ mv "$$(echo "$(1)" | sed "s/-$(3)$$//")" $(1) ;\ } -endef +endef \ No newline at end of file diff --git a/kind-config.yaml b/kind-config.yaml index 45dc76c..752e993 100644 --- a/kind-config.yaml +++ b/kind-config.yaml @@ -1,8 +1,6 @@ kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 -name: dbaas-controller-cluster nodes: - role: control-plane - role: worker - role: worker -image: kindest/node:v1.29.2 \ No newline at end of file From cb1e3ef4422d9c341a440db8c20fed630b19fcda Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Fri, 3 May 2024 08:07:58 +1000 Subject: [PATCH 2/2] chore: update Makefile Co-authored-by: Marco Cadetg --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index be90b53..59a0e58 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ else GOBIN=$(shell go env GOBIN) endif -KIND_CLUSTER = kind +KIND_CLUSTER ?= kind # CONTAINER_TOOL defines the container tool to be used for building images. # Be aware that the target commands are only tested with Docker which is