@@ -27,16 +27,31 @@ PULSAR := $(GOBUILDDIR)/bin/pulsar$(shell go env GOEXE)
2727ifndef DOCKERNAMESPACE
2828 DOCKERNAMESPACE := arangodb
2929endif
30- ifndef DOCKERFILE
31- DOCKERFILE := Dockerfile
32- # DOCKERFILE := Dockerfile.debug
30+ DOCKERFILE := Dockerfile
31+ DOCKERTESTFILE := Dockerfile.test
32+
33+ ifdef IMAGETAG
34+ IMAGESUFFIX := ":$(IMAGETAG)"
35+ endif
36+
37+ ifndef OPERATORIMAGE
38+ OPERATORIMAGE := $(DOCKERNAMESPACE)/arangodb-operator$(IMAGESUFFIX)
39+ endif
40+ ifndef TESTIMAGE
41+ TESTIMAGE := $(DOCKERNAMESPACE)/arangodb-operator-test$(IMAGESUFFIX)
3342endif
3443
3544BINNAME := $(PROJECT )
3645BIN := $(BINDIR ) /$(BINNAME )
46+ TESTBINNAME := $(PROJECT ) _test
47+ TESTBIN := $(BINDIR ) /$(TESTBINNAME )
3748RELEASE := $(GOBUILDDIR ) /bin/release
3849GHRELEASE := $(GOBUILDDIR ) /bin/github-release
3950
51+ ifndef TESTNAMESPACE
52+ TESTNAMESPACE := arangodb-operator-tests
53+ endif
54+
4055SOURCES := $(shell find $(SRCDIR ) -name '* .go' -not -path './test/* ')
4156
4257.PHONY : all clean deps docker update-vendor update-generated verify-generated
@@ -77,6 +92,7 @@ update-vendor:
7792 k8s.io/client-go/... \
7893 k8s.io/gengo/args \
7994 k8s.io/apiextensions-apiserver \
95+ github.com/arangodb/go-driver \
8096 github.com/cenkalti/backoff \
8197 github.com/dchest/uniuri \
8298 github.com/dgrijalva/jwt-go \
@@ -122,11 +138,43 @@ $(BIN): $(GOBUILDDIR) $(SOURCES)
122138 go build -installsuffix cgo -ldflags " -X main.projectVersion=$( VERSION) -X main.projectBuild=$( COMMIT) " -o /usr/code/bin/$(BINNAME ) $(REPOPATH )
123139
124140docker : $(BIN )
125- docker build -f $(DOCKERFILE ) -t arangodb/arangodb-operator .
141+ docker build -f $(DOCKERFILE ) -t $(OPERATORIMAGE ) .
142+
143+ # Testing
144+
145+ $(TESTBIN ) : $(GOBUILDDIR ) $(SOURCES )
146+ @mkdir -p $(BINDIR )
147+ docker run \
148+ --rm \
149+ -v $(SRCDIR ) :/usr/code \
150+ -e GOPATH=/usr/code/.gobuild \
151+ -e GOOS=linux \
152+ -e GOARCH=amd64 \
153+ -e CGO_ENABLED=0 \
154+ -w /usr/code/ \
155+ golang:$(GOVERSION ) \
156+ go test -c -installsuffix cgo -ldflags " -X main.projectVersion=$( VERSION) -X main.projectBuild=$( COMMIT) " -o /usr/code/bin/$(TESTBINNAME ) $(REPOPATH ) /tests
157+
158+ docker-test : $(TESTBIN )
159+ docker build --quiet -f $(DOCKERTESTFILE ) -t $(TESTIMAGE ) .
160+
161+ run-tests : docker-test
162+ ifdef PUSHIMAGES
163+ docker push $(OPERATORIMAGE)
164+ docker push $(TESTIMAGE)
165+ endif
166+ $(ROOTDIR)/scripts/kube_delete_namespace.sh $(TESTNAMESPACE)
167+ kubectl create namespace $(TESTNAMESPACE)
168+ $(ROOTDIR)/examples/setup-rbac.sh --namespace=$(TESTNAMESPACE)
169+ $(ROOTDIR)/scripts/kube_create_operator.sh $(TESTNAMESPACE) $(OPERATORIMAGE)
170+ kubectl --namespace $(TESTNAMESPACE) run arangodb-operator-test -i --rm --quiet --restart=Never --image=$(TESTIMAGE) --env="TEST_NAMESPACE=$(TESTNAMESPACE)" -- -test.v
171+ kubectl delete namespace $(TESTNAMESPACE) --ignore-not-found --now
172+
173+ # Release building
126174
127175docker-push : docker
128176ifneq ($(DOCKERNAMESPACE ) , arangodb)
129- docker tag arangodb/arangodb-operator $(DOCKERNAMESPACE)/arangodb-operator
177+ docker tag $(OPERATORIMAGE) $(DOCKERNAMESPACE)/arangodb-operator
130178endif
131179 docker push $(DOCKERNAMESPACE)/arangodb-operator
132180
@@ -161,7 +209,7 @@ minikube-start:
161209 minikube start --cpus=4 --memory=6144
162210
163211delete-operator :
164- kubectl delete -f examples/deployment.yaml || true
212+ kubectl delete -f examples/deployment.yaml --ignore-not-found
165213
166214redeploy-operator : delete-operator
167215 kubectl create -f examples/deployment.yaml
0 commit comments