126 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
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)
 |