github.com/verrazzano/verrazzano-monitoring-operator@v0.0.30/Makefile (about) 1 # Copyright (C) 2020, 2022, Oracle and/or its affiliates. 2 # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 OPERATOR_NAME:=verrazzano-monitoring-operator 4 ESWAIT_NAME:=verrazzano-monitoring-instance-eswait 5 6 DOCKER_IMAGE_NAME_OPERATOR ?= ${OPERATOR_NAME}-dev 7 DOCKERFILE_OPERATOR = docker-images/${OPERATOR_NAME}/Dockerfile 8 9 DOCKER_IMAGE_NAME_ESWAIT ?= ${ESWAIT_NAME}-dev 10 DOCKERFILE_ESWAIT = docker-images/${ESWAIT_NAME}/Dockerfile 11 12 DOCKER_IMAGE_TAG ?= local-$(shell git rev-parse --short HEAD) 13 14 CREATE_LATEST_TAG=0 15 16 # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) 17 ifeq (,$(shell go env GOBIN)) 18 GOBIN=$(shell go env GOPATH)/bin 19 else 20 GOBIN=$(shell go env GOBIN) 21 endif 22 23 24 ifeq ($(MAKECMDGOALS),$(filter $(MAKECMDGOALS),push push-tag push-eswait push-tag-eswait)) 25 ifndef DOCKER_REPO 26 $(error DOCKER_REPO must be defined as the name of the docker repository where image will be pushed) 27 endif 28 ifndef DOCKER_NAMESPACE 29 $(error DOCKER_NAMESPACE must be defined as the name of the docker namespace where image will be pushed) 30 endif 31 DOCKER_IMAGE_FULLNAME_OPERATOR = ${DOCKER_REPO}/${DOCKER_NAMESPACE}/${DOCKER_IMAGE_NAME_OPERATOR} 32 DOCKER_IMAGE_FULLNAME_ESWAIT = ${DOCKER_REPO}/${DOCKER_NAMESPACE}/${DOCKER_IMAGE_NAME_ESWAIT} 33 endif 34 35 ifdef INTEG_RUN_ID 36 RUN_ID_OPT=--runid=${INTEG_RUN_ID} 37 endif 38 39 ifdef INTEG_INGRESS 40 INGRESS_OPT="--ingress" 41 endif 42 43 DOCKER_NAMESPACE ?= verrazzano 44 DOCKER_REPO ?= ghcr.io 45 DIST_DIR:=dist 46 BIN_DIR:=${DIST_DIR}/bin 47 BIN_NAME:=${OPERATOR_NAME} 48 K8S_EXTERNAL_IP:=localhost 49 K8S_NAMESPACE:=verrazzano-system 50 WATCH_NAMESPACE:= 51 WATCH_VMI:= 52 EXTRA_PARAMS= 53 ENV_NAME=verrazzano-monitoring-operator 54 INTEG_SKIP_TEARDOWN:=false 55 INTEG_PHASE:="" 56 INTEG_RUN_REGEX=Test 57 INGRESS_CONTROLLER_SVC_NAME:=ingress-controller 58 GO ?= go 59 HELM_CHART_NAME ?= verrazzano-monitoring-operator 60 CONTROLLER_GEN_VERSION ?= v0.8.0 61 CRD_OPTIONS ?= "crd:crdVersions=v1" 62 CRD_PATH:=./k8s/crds 63 CRD_FILE:=./k8s/crds/verrazzano.io_verrazzanomonitoringinstances.yaml 64 .PHONY: all 65 all: build 66 67 BUILDVERSION=`git describe --tags` 68 BUILDDATE=`date +%FT%T%z` 69 70 .PHONY: manifests 71 manifests: controller-gen 72 $(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=verrazzano-monitoring-operator-cluster-role webhook paths="./..." output:crd:artifacts:config=$(CRD_PATH) 73 ./hack/add_header.sh $(CRD_FILE) 74 75 .PHONY: generate 76 generate: 77 ./hack/update-codegen.sh 78 79 .PHONY: controller-gen 80 controller-gen: 81 ifeq (, $(shell which controller-gen)) 82 $(GO) install sigs.k8s.io/controller-tools/cmd/controller-gen@${CONTROLLER_GEN_VERSION} 83 $(eval CONTROLLER_GEN=$(GOBIN)/controller-gen) 84 else 85 $(eval CONTROLLER_GEN=$(shell which controller-gen)) 86 endif 87 @{ \ 88 set -eu; \ 89 ACTUAL_CONTROLLER_GEN_VERSION=$$(${CONTROLLER_GEN} --version | awk '{print $$2}') ; \ 90 if [ "$${ACTUAL_CONTROLLER_GEN_VERSION}" != "${CONTROLLER_GEN_VERSION}" ] ; then \ 91 echo "Bad controller-gen version $${ACTUAL_CONTROLLER_GEN_VERSION}, please install ${CONTROLLER_GEN_VERSION}" ; \ 92 exit 1; \ 93 fi ; \ 94 } 95 96 # 97 # Go build related tasks 98 # 99 .PHONY: go-install 100 go-install: 101 GO111MODULE=on $(GO) install ./cmd/... 102 103 .PHONY: go-run 104 go-run: go-install 105 GO111MODULE=on $(GO) run cmd/verrazzano-monitoring-ctrl/main.go --kubeconfig=${KUBECONFIG} --zap-log-level=debug --namespace=${K8S_NAMESPACE} --watchNamespace=${WATCH_NAMESPACE} --watchVmi=${WATCH_VMI} ${EXTRA_PARAMS} 106 107 .PHONY: go-vendor 108 go-vendor: 109 glide install -v 110 111 # 112 # Docker-related tasks and functions 113 # 114 115 .PHONY: docker-clean 116 docker-clean: 117 rm -rf ${DIST_DIR} 118 119 .PHONY: k8s-dist 120 k8s-dist: docker-clean 121 echo ${DOCKER_IMAGE_TAG} ${JENKINS_URL} ${CI_COMMIT_TAG} ${CI_COMMIT_SHA} 122 echo ${DOCKER_IMAGE_NAME_OPERATOR} 123 mkdir -p ${DIST_DIR} 124 cp -r docker-images/verrazzano-monitoring-operator/* ${DIST_DIR} 125 cp -r k8s/manifests/verrazzano-monitoring-operator.yaml $(DIST_DIR)/verrazzano-monitoring-operator.yaml 126 127 # Fill in Docker image and tag that's being tested 128 sed -i.bak "s|${DOCKER_REPO}/${DOCKER_NAMESPACE}/verrazzano-monitoring-operator:latest|${DOCKER_REPO}/${DOCKER_NAMESPACE}/${DOCKER_IMAGE_NAME_OPERATOR}:$(DOCKER_IMAGE_TAG)|g" $(DIST_DIR)/verrazzano-monitoring-operator.yaml 129 sed -i.bak "s/latest/$(DOCKER_IMAGE_TAG)/g" $(DIST_DIR)/verrazzano-monitoring-operator.yaml 130 sed -i.bak "s/default/${K8S_NAMESPACE}/g" $(DIST_DIR)/verrazzano-monitoring-operator.yaml 131 132 rm -rf $(DIST_DIR)/verrazzano-monitoring-operator*.bak 133 mkdir -p ${BIN_DIR} 134 135 .PHONY: build 136 build: k8s-dist 137 docker build --pull --no-cache \ 138 --build-arg BUILDVERSION=${BUILDVERSION} \ 139 --build-arg BUILDDATE=${BUILDDATE} \ 140 -t ${DOCKER_IMAGE_NAME_OPERATOR}:${DOCKER_IMAGE_TAG} \ 141 -f ${DOCKERFILE_OPERATOR} \ 142 . 143 144 .PHONY: buildhook 145 buildhook: 146 rm -rf /usr/bin/verrazzano-backup-hook 147 go build \ 148 -ldflags '-extldflags "-static"' \ 149 -ldflags "-X main.buildVersion=${BUILDVERSION} -X main.buildDate=${BUILDDATE}" \ 150 -o /usr/bin/verrazzano-backup-hook ./verrazzano-backup-hook 151 152 153 .PHONY: push 154 push: build 155 docker tag ${DOCKER_IMAGE_NAME_OPERATOR}:${DOCKER_IMAGE_TAG} ${DOCKER_IMAGE_FULLNAME_OPERATOR}:${DOCKER_IMAGE_TAG} 156 docker push ${DOCKER_IMAGE_FULLNAME_OPERATOR}:${DOCKER_IMAGE_TAG} 157 158 if [ "${CREATE_LATEST_TAG}" == "1" ]; then \ 159 docker tag ${DOCKER_IMAGE_NAME_OPERATOR}:${DOCKER_IMAGE_TAG} ${DOCKER_IMAGE_FULLNAME_OPERATOR}:latest; \ 160 docker push ${DOCKER_IMAGE_FULLNAME_OPERATOR}:latest; \ 161 fi 162 163 .PHONY: push-tag 164 push-tag: 165 docker pull ${DOCKER_IMAGE_FULLNAME_OPERATOR}:${DOCKER_IMAGE_TAG} 166 docker tag ${DOCKER_IMAGE_FULLNAME_OPERATOR}:${DOCKER_IMAGE_TAG} ${DOCKER_IMAGE_FULLNAME_OPERATOR}:${TAG_NAME} 167 docker push ${DOCKER_IMAGE_FULLNAME_OPERATOR}:${TAG_NAME} 168 169 170 # 171 # Tests-related tasks 172 # 173 .PHONY: unit-test 174 unit-test: go-install 175 GO111MODULE=on $(GO) test -v ./pkg/... ./cmd/... ./verrazzano-backup-hook/ 176 177 # 178 # Run all checks, convenient as a sanity-check before committing/pushing 179 # 180 .PHONY: check 181 check: golangci-lint unit-test 182 183 .PHONY: coverage 184 coverage: 185 ./build/scripts/coverage.sh html 186 187 .PHONY: integ-test 188 integ-test: go-install 189 GO111MODULE=on $(GO) get -u github.com/oracle/oci-go-sdk 190 GO111MODULE=on $(GO) test -v ./test/integ/ -timeout 30m --kubeconfig=${KUBECONFIG} --externalip=${K8S_EXTERNAL_IP} --namespace=${K8S_NAMESPACE} --skipteardown=${INTEG_SKIP_TEARDOWN} --run=${INTEG_RUN_REGEX} --phase=${INTEG_PHASE} --ingressControllerSvcName=${INGRESS_CONTROLLER_SVC_NAME} ${INGRESS_OPT} ${RUN_ID_OPT} 191 192 # find or download and execute golangci-lint 193 .PHONY: golangci-lint 194 golangci-lint: 195 ifeq (, $(shell command -v golangci-lint)) 196 curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $$(go env GOPATH)/bin v1.49.0 197 endif 198 golangci-lint run 199 200 # check if the repo is clean after running generate 201 .PHONY: check-repo-clean 202 check-repo-clean: generate manifests 203 ./build/scripts/check_if_clean_after_generate.sh