forked from apache/solr-operator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
136 lines (107 loc) · 3.78 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
135
136
# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
CRD_OPTIONS ?= "crd"
# Image URL to use all building/pushing image targets
NAME ?= solr-operator
NAMESPACE ?= bloomberg/
IMG = $(NAMESPACE)$(NAME)
VERSION ?= $(shell git describe --tags HEAD)
GIT_SHA = $(shell git rev-parse --short HEAD)
GOOS = $(shell go env GOOS)
ARCH = $(shell go env GOARCH)
GO111MODULE ?= on
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
ifeq (,$(shell go env GOBIN))
GOBIN=$(shell go env GOPATH)/bin
else
GOBIN=$(shell go env GOBIN)
endif
all: generate
version:
@echo $(VERSION)
###
# Setup
###
clean:
rm -rf ./bin
rm -rf ./release-artifacts
mod-tidy:
export GO111MODULE=on; go mod tidy
release: clean manifests helm-check
VERSION=${VERSION} bash hack/release/update_versions.sh
VERSION=${VERSION} bash hack/release/build_helm.sh
VERSION=${VERSION} bash hack/release/setup_release.sh
###
# Building
###
# Build solr-operator binary
build: generate vet
BIN=solr-operator VERSION=${VERSION} GIT_SHA=${GIT_SHA} ARCH=${ARCH} GOOS=${GOOS} ./build/build.sh
# Run tests
test: check-format check-license generate fmt vet manifests
go test ./... -coverprofile cover.out
# Run against the configured Kubernetes cluster in ~/.kube/config
run: generate fmt vet manifests
go run ./main.go
# Install CRDs into a cluster
install: manifests
kubectl apply -k config/crd
# Deploy controller in the configured Kubernetes cluster in ~/.kube/config
deploy: manifests
cd config/manager && touch kustomization.yaml && kustomize edit add resource manager.yaml && kustomize edit set image bloomberg/solr-operator=${IMG}:${VERSION}
kubectl apply -k config/default
# Generate manifests e.g. CRD, RBAC etc.
manifests: controller-gen mod-tidy
$(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=solr-operator-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
./hack/helm/copy_crds_roles_helm.sh
# Run go fmt against code
fmt:
go fmt ./...
# Run go vet against code
vet:
go vet ./...
check-format:
./hack/check_format.sh
check-license:
./hack/check_license.sh
manifests-check:
@echo "Check to make sure the manifests are up to date"
git diff --exit-code -- config
helm-check:
helm lint helm/solr-operator
# Generate code
generate: controller-gen
$(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths="./..."
# # find or download controller-gen
# download controller-gen if necessary
controller-gen:
ifeq (, $(shell which controller-gen))
go get sigs.k8s.io/controller-tools/cmd/[email protected]
CONTROLLER_GEN=$(shell go env GOPATH)/bin/controller-gen
else
CONTROLLER_GEN=$(shell which controller-gen)
endif
###
# Docker Building & Pushing
###
# Build the base builder docker image
# This can be a static go build or dynamic
docker-base-build:
docker build --build-arg VERSION=$(VERSION) --build-arg GIT_SHA=$(GIT_SHA) . -t solr-operator-build -f ./build/Dockerfile.build
# Build the docker image for the operator only
docker-build: docker-base-build
docker build --build-arg BUILD_IMG=solr-operator-build . -t solr-operator -f ./build/Dockerfile.slim
docker tag solr-operator ${IMG}:${VERSION}
docker tag solr-operator ${IMG}:latest
# Build the docker image for the operator, containing the vendor deps as well
docker-vendor-build: docker-build
docker build --build-arg BUILD_IMG=solr-operator-build --build-arg SLIM_IMAGE=solr-operator . -t solr-operator-vendor -f ./build/Dockerfile.vendor
docker tag solr-operator-vendor ${IMG}:${VERSION}-vendor
docker tag solr-operator-vendor ${IMG}:latest-vendor
# Push the docker image for the operator
docker-push:
docker push ${IMG}:${VERSION}
docker push ${IMG}:latest
# Push the docker image for the operator with vendor deps
docker-vendor-push:
docker push ${IMG}:${VERSION}-vendor
docker push ${IMG}:latest-vendor