# ==================================================================================== # Setup Project PROJECT_NAME := function-runtime-oci PROJECT_REPO := github.com/crossplane/$(PROJECT_NAME) PLATFORMS ?= linux_amd64 linux_arm64 linux_arm linux_ppc64le darwin_amd64 darwin_arm64 windows_amd64 # -include will silently skip missing files, which allows us # to load those files with a target in the Makefile. If only # "include" was used, the make command would fail and refuse # to run a target until the include commands succeeded. -include build/makelib/common.mk # ==================================================================================== # Setup Go # Set a sane default so that the nprocs calculation below is less noisy on the initial # loading of this file NPROCS ?= 1 # each of our test suites starts a kube-apiserver and running many test suites in # parallel can lead to high CPU utilization. by default we reduce the parallelism # to half the number of CPU cores. GO_TEST_PARALLEL := $(shell echo $$(( $(NPROCS) / 2 ))) GO_STATIC_PACKAGES = $(GO_PROJECT)/cmd/function-runtime-oci # GO_TEST_PACKAGES = $(GO_PROJECT)/test GO_LDFLAGS += -X $(GO_PROJECT)/internal/version.version=$(VERSION) GO_SUBDIRS += cmd internal GO111MODULE = on GOLANGCILINT_VERSION = 1.54.2 -include build/makelib/golang.mk # ==================================================================================== # Setup Images # Due to the way that the shared build logic works, images should # all be in folders at the same level (no additional levels of nesting). REGISTRY_ORGS = docker.io/crossplane xpkg.upbound.io/crossplane IMAGES = function-runtime-oci -include build/makelib/imagelight.mk # ==================================================================================== # Targets # run `make help` to see the targets and options # We want submodules to be set up the first time `make` is run. # We manage the build/ folder and its Makefiles as a submodule. # The first time `make` is run, the includes of build/*.mk files will # all fail, and this target will be run. The next time, the default as defined # by the includes will be run instead. fallthrough: submodules @echo Initial setup complete. Running make again . . . @make # Generate a coverage report for cobertura applying exclusions on # - generated file cobertura: @cat $(GO_TEST_OUTPUT)/coverage.txt | \ grep -v zz_generated.deepcopy | \ $(GOCOVER_COBERTURA) > $(GO_TEST_OUTPUT)/cobertura-coverage.xml # Update the submodules, such as the common build scripts. submodules: @git submodule sync @git submodule update --init --recursive # NOTE(hasheddan): the build submodule currently overrides XDG_CACHE_HOME in # order to force the Helm 3 to use the .work/helm directory. This causes Go on # Linux machines to use that directory as the build cache as well. We should # adjust this behavior in the build submodule because it is also causing Linux # users to duplicate their build cache, but for now we just make it easier to # identify its location in CI so that we cache between builds. go.cachedir: @go env GOCACHE # This is for running out-of-cluster locally, and is for convenience. Running # this make target will print out the command which was used. For more control, # try running the binary directly with different arguments. run: go.build @$(INFO) running crossplane locally $(GO_OUT_DIR) start --debug .PHONY: cobertura submodules fallthrough run