github.com/verrazzano/verrazzano@v1.7.1/tools/psr/Makefile (about) 1 # Copyright (c) 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 include ../../make/quality.mk 4 include ../../make/retry.mk 5 6 SCRIPT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))/../../build 7 TOOLS_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))/../../tools 8 9 BACKEND_NAME ?= psr-backend 10 MAKEFILE_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) 11 PSR_DIR:=${MAKEFILE_DIR} 12 CLI_DIR:=github.com$(shell echo ${MAKEFILE_DIR} | sed 's/.*github.com//')/psrctl 13 14 VERSION_DIR:=$(CLI_DIR)/cmd/version 15 CONSTANTS_DIR:=$(CLI_DIR)/cmd/constants 16 BACKEND_DIR:=$(PSR_DIR)/backend 17 18 DOCKER_REGISTRY ?= ghcr.io 19 DOCKER_REPO ?= verrazzano 20 21 ifndef DOCKER_IMAGE_FULLNAME 22 DOCKER_IMAGE_NAME ?= ${BACKEND_NAME} 23 DOCKER_IMAGE_FULLNAME=${DOCKER_IMAGE_NAME} 24 ifdef DOCKER_REPO 25 DOCKER_IMAGE_FULLNAME := ${DOCKER_REPO}/${DOCKER_IMAGE_FULLNAME} 26 endif 27 ifdef DOCKER_REGISTRY 28 DOCKER_IMAGE_FULLNAME := ${DOCKER_REGISTRY}/${DOCKER_IMAGE_FULLNAME} 29 endif 30 endif 31 DOCKER_IMAGE_TAG ?= local-$(shell git rev-parse --short HEAD) 32 DOCKER_IMAGE_FULL_PATH := ${DOCKER_IMAGE_FULLNAME}:${DOCKER_IMAGE_TAG} 33 34 GIT_COMMIT:=$(shell git rev-parse HEAD) 35 BUILD_VERSION:=$(shell grep verrazzano-development-version ${MAKEFILE_DIR}/../../.verrazzano-development-version | cut -d= -f 2) 36 BUILD_DATE:=$(shell date +"%Y-%m-%dT%H:%M:%SZ") 37 38 DIST_DIR:=dist 39 GO=GO111MODULE=on GOPRIVATE=github.com/verrazzano/* CGO_ENABLED=0 go 40 CLI_GO_LDFLAGS=-X '${VERSION_DIR}.gitCommit=${GIT_COMMIT}' -X '${VERSION_DIR}.buildDate=${BUILD_DATE}' -X '${VERSION_DIR}.cliVersion=${BUILD_VERSION}' -X '${CONSTANTS_DIR}.defaultWorkerImage=${DOCKER_IMAGE_FULL_PATH}' 41 42 export TEST_PATHS ?= ./backend/... 43 44 # 45 # Go build related tasks 46 # 47 .PHONY: go-build 48 go-build: 49 GOOS=linux GOARCH=amd64 $(GO) build \ 50 -ldflags '-extldflags "-static"' \ 51 -ldflags "-X main.buildVersion=${BUILD_VERSION}" \ 52 -ldflags "-X main.buildDate=${BUILD_DATE}" \ 53 -o out/linux_amd64/psr-backend \ 54 ${BACKEND_DIR}/main.go 55 56 # 57 # Go build cli related tasks 58 # 59 .PHONY: go-build-cli 60 go-build-cli: 61 GOOS=darwin GOARCH=amd64 $(GO) build \ 62 -ldflags "${CLI_GO_LDFLAGS}" \ 63 -o out/darwin_amd64/psrctl \ 64 ${GOPATH}/src/${CLI_DIR}/main.go 65 GOOS=darwin GOARCH=arm64 $(GO) build \ 66 -ldflags "${CLI_GO_LDFLAGS}" \ 67 -o out/darwin_arm64/psrctl \ 68 ${GOPATH}/src/${CLI_DIR}/main.go 69 GOOS=linux GOARCH=amd64 $(GO) build \ 70 -ldflags "${CLI_GO_LDFLAGS}" \ 71 -o out/linux_amd64/psrctl \ 72 ${GOPATH}/src/${CLI_DIR}/main.go 73 GOOS=linux GOARCH=arm64 $(GO) build \ 74 -ldflags "${CLI_GO_LDFLAGS}" \ 75 -o out/linux_arm64/psrctl \ 76 ${GOPATH}/src/${CLI_DIR}/main.go 77 78 # 79 # Docker-related tasks 80 # 81 .PHONY: docker-clean 82 docker-clean: 83 rm -rf ${DIST_DIR} 84 85 .PHONY: docker-build 86 docker-build: go-build docker-clean 87 docker build --pull \ 88 -t ${DOCKER_IMAGE_FULLNAME}:${DOCKER_IMAGE_TAG} . 89 90 .PHONY: docker-push 91 docker-push: docker-build 92 $(call retry_docker_push,${DOCKER_IMAGE_FULLNAME}:${DOCKER_IMAGE_TAG}) 93 94 .PHONY: kind-load-image 95 kind-load-image: docker-build 96 kind load docker-image --name kind ${DOCKER_IMAGE_FULLNAME}:${DOCKER_IMAGE_TAG} 97 98 .PHONY: run-example-oam 99 run-example-oam: kind-load-image 100 helm upgrade --install psr manifests/charts/worker --set imageName=${DOCKER_IMAGE_FULLNAME}:${DOCKER_IMAGE_TAG} 101 102 .PHONY: run-example-k8s 103 run-example-k8s: kind-load-image 104 helm upgrade --install psr manifests/charts/worker --set appType=k8s --set imageName=${DOCKER_IMAGE_FULLNAME}:${DOCKER_IMAGE_TAG} 105 106 # 107 # run the CLI 108 # 109 .PHONY: run-cli 110 run-cli: 111 $(GO) run ${GOPATH}/src/${CLI_DIR}/main.go 112 113 # 114 # install the CLI 115 # 116 .PHONY: install-cli 117 install-cli: docker-build 118 $(GO) install -ldflags "${CLI_GO_LDFLAGS}" ./psrctl/... 119 120 .PHONY: unit-test 121 unit-test: 122 $(GO) test -v ${TEST_PATHS} 123 124 psr-quality: export FAIL_IF_COVERAGE_DECREASED ?= false 125 psr-quality: export UPLOAD_UNIT_TEST_COVERAGE ?= false 126 .PHONY: psr-quality 127 psr-quality: golangci-lint word-linter coverage