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