SHELL := /usr/bin/env bash PATH := $(GOPATH)/bin:$(PATH) OSFLAG := ifeq ($(OS),Windows_NT) OSFLAG = WIN32 else UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) OSFLAG = LINUX endif ifeq ($(UNAME_S),Darwin) OSFLAG = OSX endif endif define strip_quotes $(shell echo $(1) | sed -e 's/^"//' -e 's/"$$//') endef # Import config # You can change the default config with `make config="config_special.env" build` config ?= config.kind.env include $(config) include config.base.env $(foreach var,$(shell cat config.base.env),$(eval $(call strip_quotes,$(var)))) # Set an output prefix, which is the local directory if not specified PREFIX?=$(shell pwd) VERSION := $(shell cat VERSION.txt) GITCOMMIT := $(shell git rev-parse --short HEAD) GITBRANCH := $(shell git rev-parse --abbrev-ref HEAD) GITUNTRACKEDCHANGES := $(shell git status --porcelain --untracked-files=no) GITIGNOREDBUTTRACKEDCHANGES := $(shell git ls-files -i -c --exclude-standard) ifneq ($(GITUNTRACKEDCHANGES),) GITCOMMIT := $(GITCOMMIT)-dirty endif ifneq ($(GITIGNOREDBUTTRACKEDCHANGES),) GITCOMMIT := $(GITCOMMIT)-dirty endif VERSION_TAG := $(VERSION) LATEST_TAG := latest BUILD_TAG := $(GITBRANCH)-$(GITCOMMIT) BUILD_PATH := ./cmd/main.go # CONTAINER_RUNTIME_COMMAND is Container Runtime - it could be docker or podman CONTAINER_RUNTIME_COMMAND := docker # Set any default go build tags BUILDTAGS := # Set the build dir, where built cross-compiled binaries will be output BUILDDIR := ${PREFIX}/cross CTIMEVAR=-X $(PKG)/version.GitCommit=$(GITCOMMIT) -X $(PKG)/version.Version=$(VERSION) GO_LDFLAGS=-ldflags "-w $(CTIMEVAR)" GO_LDFLAGS_STATIC=-ldflags "-w $(CTIMEVAR) -extldflags -static" # List the GOOS and GOARCH to build GOOSARCHES = linux/amd64 PACKAGES = $(shell go list -f '{{.ImportPath}}/' ./... | grep -v vendor) PACKAGES_FOR_UNIT_TESTS = $(shell go list -f '{{.ImportPath}}/' ./... | grep -v vendor | grep -v e2e | grep -v helm) # Run all the e2e tests by default E2E_TEST_SELECTOR ?= .* JENKINS_API_HOSTNAME := $(shell $(JENKINS_API_HOSTNAME_COMMAND) 2> /dev/null || echo "" ) OPERATOR_ARGS ?= --jenkins-api-hostname=$(JENKINS_API_HOSTNAME) --jenkins-api-port=$(JENKINS_API_PORT) --jenkins-api-use-nodeport=$(JENKINS_API_USE_NODEPORT) --cluster-domain=$(CLUSTER_DOMAIN) $(OPERATOR_EXTRA_ARGS) .DEFAULT_GOAL := help PLATFORM = $(shell echo $(UNAME_S) | tr A-Z a-z) CPUS_NUMBER = 3 MEMORY_AMOUNT = 4096 ##################### FROM OPERATOR SDK ######################## # Default bundle image tag IMAGE_TAG_BASE ?= quay.io/jenkins-kubernetes-operator # BUNDLE_GEN_FLAGS are the flags passed to the operator-sdk generate bundle command BUNDLE_GEN_FLAGS ?= -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS) # USE_IMAGE_DIGESTS defines if images are resolved via tags or digests # You can enable this value if you would like to use SHA Based Digests # To enable set flag to true USE_IMAGE_DIGESTS ?= false ifeq ($(USE_IMAGE_DIGESTS), true) BUNDLE_GEN_FLAGS += --use-image-digests endif BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION) # Options for 'bundle-build' ifneq ($(origin CHANNELS), undefined) BUNDLE_CHANNELS := --channels=$(CHANNELS) endif ifneq ($(origin DEFAULT_CHANNEL), undefined) BUNDLE_DEFAULT_CHANNEL := --default-channel=$(DEFAULT_CHANNEL) endif BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL) # Image URL to use all building/pushing image targets IMG ?= controller:latest # Produce CRDs that work back to Kubernetes 1.11 (no version conversion) # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) ifeq (,$(shell go env GOBIN)) GOBIN=$(shell go env GOPATH)/bin else GOBIN=$(shell go env GOBIN) endif # Setting SHELL to bash allows bash commands to be executed by recipes. # This is a requirement for 'setup-envtest.sh' in the test target. # Options are set to exit when a recipe line exits non-zero or a piped command fails. SHELL = /usr/bin/env bash -o pipefail .SHELLFLAGS = -ec all: build ENVTEST_ASSETS_DIR=$(shell pwd)/testbin PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) OS = $(shell go env GOOS) ARCH = $(shell go env GOARCH)