mirror of
https://github.com/netbirdio/netbird-crossplane-provider.git
synced 2026-05-22 18:44:14 -07:00
161 lines
6.1 KiB
Makefile
161 lines
6.1 KiB
Makefile
# ====================================================================================
|
|
# Setup Project
|
|
PROJECT_NAME := netbird-crossplane-provider
|
|
PROJECT_REPO := github.com/crossplane/$(PROJECT_NAME)
|
|
|
|
PLATFORMS ?= linux_amd64 linux_arm64
|
|
-include build/makelib/common.mk
|
|
|
|
# ====================================================================================
|
|
# Setup Output
|
|
|
|
-include build/makelib/output.mk
|
|
|
|
# ====================================================================================
|
|
# Setup Go
|
|
|
|
NPROCS ?= 1
|
|
GO_TEST_PARALLEL := $(shell echo $$(( $(NPROCS) / 2 )))
|
|
GO_STATIC_PACKAGES = $(GO_PROJECT)/cmd/provider
|
|
GO_LDFLAGS += -X $(GO_PROJECT)/internal/version.Version=$(VERSION)
|
|
GO_SUBDIRS += cmd internal apis
|
|
GO111MODULE = on
|
|
-include build/makelib/golang.mk
|
|
|
|
# ====================================================================================
|
|
# Setup Kubernetes tools
|
|
|
|
-include build/makelib/k8s_tools.mk
|
|
|
|
# ====================================================================================
|
|
# Setup Images
|
|
|
|
IMAGES = netbird-crossplane-provider
|
|
-include build/makelib/imagelight.mk
|
|
|
|
# ====================================================================================
|
|
# Setup XPKG
|
|
|
|
XPKG_REG_ORGS ?= xpkg.upbound.io/crossplane
|
|
# NOTE(hasheddan): skip promoting on xpkg.upbound.io as channel tags are
|
|
# inferred.
|
|
XPKG_REG_ORGS_NO_PROMOTE ?= xpkg.upbound.io/crossplane
|
|
XPKGS = netbird-crossplane-provider
|
|
-include build/makelib/xpkg.mk
|
|
|
|
# NOTE(hasheddan): we force image building to happen prior to xpkg build so that
|
|
# we ensure image is present in daemon.
|
|
xpkg.build.netbird-crossplane-provider: do.build.images
|
|
|
|
fallthrough: submodules
|
|
@echo Initial setup complete. Running make again . . .
|
|
@make
|
|
|
|
# integration tests
|
|
e2e.run: test-integration
|
|
|
|
# Run integration tests.
|
|
test-integration: $(KIND) $(KUBECTL) $(UP) $(HELM3)
|
|
@$(INFO) running integration tests using kind $(KIND_VERSION)
|
|
@KIND_NODE_IMAGE_TAG=${KIND_NODE_IMAGE_TAG} $(ROOT_DIR)/cluster/local/integration_tests.sh || $(FAIL)
|
|
@$(OK) integration tests passed
|
|
|
|
# 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
|
|
|
|
# NOTE(hasheddan): we must ensure up is installed in tool cache prior to build
|
|
# as including the k8s_tools machinery prior to the xpkg machinery sets UP to
|
|
# point to tool cache.
|
|
build.init: $(UP)
|
|
|
|
# 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 out-of-cluster . . .
|
|
@# To see other arguments that can be provided, run the command with --help instead
|
|
$(GO_OUT_DIR)/provider --debug
|
|
|
|
dev: $(KIND) $(KUBECTL) $(HELM)
|
|
@$(INFO) Creating kind cluster
|
|
@$(KIND) create cluster --name=$(PROJECT_NAME)-dev
|
|
@$(KUBECTL) cluster-info --context kind-$(PROJECT_NAME)-dev
|
|
@$(INFO) Installing Crossplane CRDs
|
|
@$(HELM) repo add crossplane-stable https://charts.crossplane.io/stable
|
|
@$(HELM) upgrade --install crossplane --namespace crossplane-system --create-namespace crossplane-stable/crossplane
|
|
|
|
|
|
dev-clean: $(KIND) $(KUBECTL)
|
|
@$(INFO) Deleting kind cluster
|
|
@$(KIND) delete cluster --name=$(PROJECT_NAME)-dev
|
|
|
|
.PHONY: submodules fallthrough test-integration run dev dev-clean
|
|
|
|
# ====================================================================================
|
|
# Special Targets
|
|
|
|
# Install gomplate
|
|
GOMPLATE_VERSION := 3.10.0
|
|
GOMPLATE := $(TOOLS_HOST_DIR)/gomplate-$(GOMPLATE_VERSION)
|
|
|
|
$(GOMPLATE):
|
|
@$(INFO) installing gomplate $(SAFEHOSTPLATFORM)
|
|
@mkdir -p $(TOOLS_HOST_DIR)
|
|
@curl -fsSLo $(GOMPLATE) https://github.com/hairyhenderson/gomplate/releases/download/v$(GOMPLATE_VERSION)/gomplate_$(SAFEHOSTPLATFORM) || $(FAIL)
|
|
@chmod +x $(GOMPLATE)
|
|
@$(OK) installing gomplate $(SAFEHOSTPLATFORM)
|
|
|
|
export GOMPLATE
|
|
|
|
# This target prepares repo for your provider by replacing all "netbird"
|
|
# occurrences with your provider name.
|
|
# This target can only be run once, if you want to rerun for some reason,
|
|
# consider stashing/resetting your git state.
|
|
# Arguments:
|
|
# provider: Camel case name of your provider, e.g. GitHub, PlanetScale
|
|
provider.prepare:
|
|
@[ "${provider}" ] || ( echo "argument \"provider\" is not set"; exit 1 )
|
|
@PROVIDER=$(provider) ./hack/helpers/prepare.sh
|
|
|
|
# This target adds a new api type and its controller.
|
|
# You would still need to register new api in "apis/<provider>.go" and
|
|
# controller in "internal/controller/<provider>.go".
|
|
# Arguments:
|
|
# provider: Camel case name of your provider, e.g. GitHub, PlanetScale
|
|
# group: API group for the type you want to add.
|
|
# kind: Kind of the type you want to add
|
|
# apiversion: API version of the type you want to add. Optional and defaults to "v1alpha1"
|
|
provider.addtype: $(GOMPLATE)
|
|
@[ "${provider}" ] || ( echo "argument \"provider\" is not set"; exit 1 )
|
|
@[ "${group}" ] || ( echo "argument \"group\" is not set"; exit 1 )
|
|
@[ "${kind}" ] || ( echo "argument \"kind\" is not set"; exit 1 )
|
|
@PROVIDER=$(provider) GROUP=$(group) KIND=$(kind) APIVERSION=$(apiversion) PROJECT_REPO=$(PROJECT_REPO) ./hack/helpers/addtype.sh
|
|
|
|
define CROSSPLANE_MAKE_HELP
|
|
Crossplane Targets:
|
|
submodules Update the submodules, such as the common build scripts.
|
|
run Run crossplane locally, out-of-cluster. Useful for development.
|
|
|
|
endef
|
|
# The reason CROSSPLANE_MAKE_HELP is used instead of CROSSPLANE_HELP is because the crossplane
|
|
# binary will try to use CROSSPLANE_HELP if it is set, and this is for something different.
|
|
export CROSSPLANE_MAKE_HELP
|
|
|
|
crossplane.help:
|
|
@echo "$$CROSSPLANE_MAKE_HELP"
|
|
|
|
help-special: crossplane.help
|
|
|
|
.PHONY: crossplane.help help-special
|