-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
134 lines (105 loc) · 4.59 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
VERSION := $(shell git describe --tags --always --dirty)
BUILDTAG := $(shell git rev-parse HEAD)
BUILDTIME := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
BUILDER := $(shell echo "`git config user.name` <`git config user.email`>")
BIN = bin
all: managementserver accesslogserver authserver controlplane testbackend
generate-files:
# We need oapi-codegen, go generate will call it to generate handler
# code for managementserver based upon OpenAPI spec file
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@latest
export PATH=${PATH}:$(go env GOPATH)/bin
go generate ./...
managementserver: generate-files
mkdir -p $(BIN)
go build -o $(BIN)/managementserver cmd/managementserver/*.go
accesslogserver:
mkdir -p $(BIN)
go build -o $(BIN)/accesslogserver cmd/accesslogserver/*.go
authserver:
mkdir -p $(BIN)
go build -o $(BIN)/authserver cmd/authserver/*.go
controlplane:
mkdir -p $(BIN)
go build -o $(BIN)/controlplane cmd/controlplane/*.go
testbackend:
mkdir -p $(BIN)
go build -o $(BIN)/testbackend cmd/testbackend/*.go
docker-images: docker-baseimage \
docker-managementserver \
docker-accesslogserver \
docker-authserver \
docker-controlplane \
docker-testbackend \
docker-dbadmin-test
docker-baseimage:
docker build -f build/Dockerfile.baseimage . -t gatekeeper/baseimage:latest
docker-managementserver:
docker build -f build/Dockerfile.managementserver . -t gatekeeper/managementserver:$(VERSION) -t gatekeeper/managementserver:latest
docker-accesslogserver:
docker build -f build/Dockerfile.accesslogserver . -t gatekeeper/accesslogserver:$(VERSION) -t gatekeeper/accesslogserver:latest
docker-authserver:
docker build -f build/Dockerfile.authserver . -t gatekeeper/authserver:$(VERSION) -t gatekeeper/authserver:latest
docker-controlplane:
docker build -f build/Dockerfile.controlplane . -t gatekeeper/controlplane:$(VERSION) -t gatekeeper/controlplane:latest
docker-testbackend:
docker build -f build/Dockerfile.testbackend . -t gatekeeper/testbackend:$(VERSION) -t gatekeeper/testbackend:latest
docker-dbadmin-test:
docker build -f build/Dockerfile.e2e-tests . -t gatekeeper/dbadmin-test:$(VERSION)
.PHONY: test
test: generate-files
mkdir -p tmp
go test -v -coverpkg=./... -covermode=atomic -coverprofile=tmp/coverage.txt ./...
.PHONY: lint
lint: generate-files
golangci-lint run
.PHONY: clean
clean:
# managementserver: copied by go generate
rm -f cmd/managementserver/handler/apidocs/gatekeeper.yaml
# managementserver: generated by oapi-codegen
rm -f cmd/managementserver/handler/handler.gen.go
rm -f $(BIN)/managementserver $(BIN)/authserver $(BIN)/controlplane $(BIN)/accesslogserver $(BIN)/testbackend
.PHONY: minikube-helm-install
minikube-helm-install: docker-images minikube-load-images
kubectl create namespace gatekeeper
helm dep up ./helm
helm install gatekeeper ./helm --wait --namespace gatekeeper -f helm/values.yaml \
--set global.e2e=true \
--set global.images.tag=$(VERSION) \
--set cassandra.persistance='{"enabled":"false"}'
.PHONY: minikube-inplace-docker-upgrade
minikube-inplace-docker-upgrade: test docker-images minikube-load-images minikube-helm-upgrade
.PHONY: minikube-helm-upgrade
minikube-helm-upgrade:
@helm upgrade gatekeeper helm --wait -f helm/values.yaml -n gatekeeper \
--set global.e2e=true \
--set cassandra.dbUser.password=`kubectl get secret -n gatekeeper gatekeeper-cassandra -o=jsonpath='{.data.cassandra-password}' | base64 -D` \
--set global.images.tag=$(VERSION) \
--set cassandra.persistance='{"enabled":"false"}'
.PHONY: minikube-helm-diff
minikube-helm-diff:
@helm diff gatekeeper helm -f helm/values.yaml -n gatekeeper \
--set global.e2e=true \
--set cassandra.dbUser.password=`kubectl get secret -n gatekeeper gatekeeper-cassandra -o=jsonpath='{.data.cassandra-password}' | base64 -D` \
--set global.images.tag=$(VERSION) \
--set cassandra.persistance='{"enabled":"false"}'
.PHONY: minikube-helm-test
minikube-helm-test:
helm test --logs -n gatekeeper gatekeeper
.PHONY: e2e-local
e2e-local: test docker-images minikube-start minikube-helm-install minikube-helm-test minikube-stop
.PHONY: e2e-actions
e2e-actions: test docker-images minikube-helm-install minikube-helm-test
.PHONY: minikube-start
minikube-start:
minikube start --cpus='4'
.PHONY: minikube-stop
minikube-stop:
minikube delete
.PHONY: minikube-load-images
minikube-load-images:
@for image in gatekeeper/testbackend gatekeeper/controlplane gatekeeper/authserver gatekeeper/accesslogserver gatekeeper/managementserver gatekeeper/dbadmin-test; do \
echo Loading $$image:$(VERSION) to Minikube ; \
minikube image load $$image:$(VERSION) ; \
done