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