mirror of
https://github.com/wahyd4/cert-manager.git
synced 2026-08-09 05:06:38 +10:00
the script will need to be manually updated if we want to add a new k8s version, but it should be trivial to do that the actual kind image SHAsums aren't updated, so that the addition of the script can be separate from the act of updating the images also adds a make target for creating a kind cluster with CI deps Signed-off-by: Ashley Davis <ashley.davis@jetstack.io>
177 lines
5.3 KiB
Makefile
177 lines
5.3 KiB
Makefile
# Copyright 2020 The cert-manager Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# STANDARD OPTIONS
|
|
###############
|
|
|
|
# Set DOCKER_REGISTRY to customise the image docker repo, e.g. "quay.io/jetstack"
|
|
DOCKER_REGISTRY :=
|
|
# Set APP_VERSION to customize the image tag, eg "v0.0.5-dev"
|
|
APP_VERSION :=
|
|
# Set the target platform to build for. Defaults to linux/amd64
|
|
PLATFORM := @io_bazel_rules_go//go/toolchain:linux_amd64
|
|
|
|
# OPTIONS YOU PROBABLY DON'T NEED TO MODIFY UNLESS DOING SOMETHING VERY SPECIFIC.
|
|
###############
|
|
|
|
# Set an alternative base image https://github.com/jetstack/cert-manager/blob/master/build/BUILD.bazel#L42
|
|
BASE_IMAGE := static
|
|
BAZEL_IMAGES_FLAGS := --define image_type=$(BASE_IMAGE)
|
|
# Ensure non cgo by default
|
|
# https://github.com/bazelbuild/rules_go/blob/master/go/modes.rst#building-pure-go-binaries
|
|
CGO_ENABLED := 0
|
|
ifeq ($(CGO_ENABLED),0)
|
|
BAZEL_IMAGES_FLAGS += --@io_bazel_rules_go//go/config:pure
|
|
endif
|
|
|
|
# Where the hack scripts live
|
|
HACK_DIR ?= hack
|
|
|
|
# Get a list of all binaries to be built
|
|
CMDS := $(shell find ./cmd/ -maxdepth 1 -mindepth 1 -type d -exec basename {} \;)
|
|
|
|
.PHONY: help
|
|
help:
|
|
# This Makefile provides common wrappers around Bazel invocations.
|
|
#
|
|
### Verify targets
|
|
#
|
|
# verify - runs all test targets (bazel test //...)
|
|
# verify_deps - ensure go module files are up to date (hack/update-deps.sh)
|
|
# verify_chart - runs Helm chart linter
|
|
# verify_upgrade - verifies upgrade from latest published release to current master with both Helm charts and static manifests
|
|
#
|
|
### Generate targets
|
|
#
|
|
# generate - regenerate all generated files
|
|
#
|
|
### Build targets
|
|
#
|
|
# clean - removes the entire output base tree, stops the Bazel server and removes test artifacts
|
|
# build - build a binary of the cert-manager CLI and build docker images for all components
|
|
# controller - build a binary of the 'controller'
|
|
# cainjector - build a binary of the 'cainjector'
|
|
# webhook - build a binary of the 'webhook'
|
|
# acmesolver - build a binary of the 'acmesolver'
|
|
# ctl - build a binary of the cert-manager CLI
|
|
# images - builds docker images for all of the components, saving them in your Docker daemon
|
|
# images_push - pushes docker images to the target registry
|
|
# crds - runs the update-crds script to ensure that generated CRDs are up to date
|
|
# cluster - creates a Kubernetes cluster for testing in CI, but doesn't install addons (KIND by default)
|
|
# ci-cluster - creates a Kubernetes cluster for testing in CI installing several required addons (KIND by default)
|
|
# release_tars - build the release tar files.
|
|
# update_kind_images - updates the digests of the kind images used for testing + CI across various K8S versions
|
|
#
|
|
# All image targets can be run with optional args DOCKER_REGISTRY, APP_VERSION, PLATFORM:
|
|
#
|
|
# make images DOCKER_REGISTRY=quay.io/yourusername APP_VERSION=v0.11.0-dev.my-feature PLATFORM=@io_bazel_rules_go//go/toolchain:linux_arm64
|
|
#
|
|
# make images_push DOCKER_REGISTRY=quay.io/yourusername APP_VERSION=v0.11.0-dev.my-feature
|
|
|
|
# Alias targets
|
|
###############
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
bazel clean --expunge
|
|
rm -rf \
|
|
$(CURDIR)/_artifacts
|
|
|
|
.PHONY: build
|
|
build: ctl images
|
|
|
|
.PHONY: verify
|
|
verify:
|
|
bazel test //...
|
|
|
|
# TODO: remove this rule in favour of calling hack/verify-deps directly
|
|
.PHONY: verify_deps
|
|
verify_deps:
|
|
$(HACK_DIR)/verify-deps.sh
|
|
# verify-deps-licenses.sh is implicitly checked by the verify-deps script
|
|
|
|
# requires docker
|
|
.PHONY: verify_chart
|
|
verify_chart:
|
|
$(HACK_DIR)/verify-chart-version.sh
|
|
|
|
.PHONY: verify_upgrade
|
|
verify_upgrade:
|
|
$(HACK_DIR)/verify-upgrade.sh
|
|
|
|
.PHONY: crds
|
|
crds:
|
|
bazel run //hack:update-crds
|
|
|
|
.PHONY: cluster
|
|
cluster:
|
|
./devel/ci-cluster.sh
|
|
|
|
.PHONY: ci-cluster
|
|
ci-cluster: cluster
|
|
./devel/setup-e2e-deps.sh
|
|
|
|
.PHONY: update_kind_images
|
|
update_kind_images: devel/cluster/kind_cluster_node_versions.sh
|
|
|
|
# has to be PHONY since it relies on remote data
|
|
.PHONY: devel/cluster/kind_cluster_node_versions.sh
|
|
devel/cluster/kind_cluster_node_versions.sh:
|
|
./hack/latest-kind-images.sh > $@
|
|
|
|
# Go targets
|
|
############
|
|
.PHONY: $(CMDS)
|
|
$(CMDS):
|
|
bazel build //cmd/$@
|
|
|
|
# Generate targets
|
|
##################
|
|
.PHONY: generate
|
|
generate:
|
|
$(HACK_DIR)/update-all.sh
|
|
|
|
# Docker targets
|
|
################
|
|
.PHONY: images
|
|
images:
|
|
APP_VERSION=$(APP_VERSION) \
|
|
DOCKER_REGISTRY=$(DOCKER_REGISTRY) \
|
|
bazel run \
|
|
--stamp \
|
|
--platforms=$(PLATFORM) \
|
|
$(BAZEL_IMAGES_FLAGS) \
|
|
//build:server-images
|
|
|
|
.PHONY: images_push
|
|
images_push:
|
|
APP_VERSION=$(APP_VERSION) \
|
|
DOCKER_REGISTRY=$(DOCKER_REGISTRY) \
|
|
bazel run \
|
|
--stamp \
|
|
--platforms=$(PLATFORM) \
|
|
$(BAZEL_IMAGES_FLAGS) \
|
|
//:images.push
|
|
|
|
# Release targets
|
|
################
|
|
|
|
.PHONY: release_tars
|
|
release_tars:
|
|
DOCKER_REGISTRY=$(DOCKER_REGISTRY) \
|
|
bazel build \
|
|
--stamp \
|
|
--platforms=$(PLATFORM) \
|
|
//build/release-tars
|