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)
|