blob: 0e109b32a53a57ef18c361a4f782b23d91b2b819 [file] [log] [blame]
# Image URL to use all building/pushing image targets
NAME ?= solr-operator
NAMESPACE ?= bloomberg/
IMG = $(NAMESPACE)$(NAME)
VERSION ?= 0.1.0
GIT_SHA = $(shell git rev-parse --short HEAD)
GOOS = $(shell go env GOOS)
ARCH = $(shell go env GOARCH)
all: generate
version:
@echo $(VERSION)
###
# Setup
###
clean:
rm -rf ./vendor
rm -rf ./bin
vendor:
rm -rf ./vendor
dep ensure -v -vendor-only
###
# Building
###
# Build manager binary
build: generate vet
BIN=manager VERSION=${VERSION} GIT_SHA=${GIT_SHA} ARCH=${ARCH} GOOS=${GOOS} ./build/build.sh
# Generate manifests e.g. CRD, RBAC etc.
manifests: generate
go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go all
rm -r config/default/rbac
mv config/rbac config/default/
@echo "updating kustomize image patch file for manager resource"
sed -i.bak -e 's@image: .*@image: '"${IMG}:${VERSION}"'@' ./config/default/manager_image_patch.yaml
rm ./config/default/manager_image_patch.yaml.bak
kustomize build config/default > config/operators/solr_operator.yaml
# Generate code
generate:
ifndef GOPATH
$(error GOPATH not defined, please define GOPATH. Run "go help gopath" to learn more about GOPATH)
endif
./hack/update-codegen.sh
go generate ./pkg/... ./cmd/...
###
# Testing
###
# Run tests
test: check-format check-license vet
./hack/verify-codegen.sh
go test ./pkg/... ./cmd/... -coverprofile cover.out
# Run go vet against code
vet:
go vet ./pkg/... ./cmd/...
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
###
# Running the operator
###
# Run against the configured Kubernetes cluster in ~/.kube/config
run: generate vet
go run ./cmd/manager/main.go
# Install CRDs into a cluster
install: manifests
kubectl apply -f config/crds
# Deploy controller in the configured Kubernetes cluster in ~/.kube/config
deploy: manifests
kubectl apply -f config/crds
kubectl apply -f config/operators/solr_operator.yaml
###
# 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.dynamic
# Build the docker image for the operator only
docker-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 --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