b01dbef358
This PS bumps ubuntu version to jammy, Golang version to 1.23 and Go modules to fix critical CVEs. Also switched from docker.io to ecr.aws docker repos to fix docker.io ratelimit issue. Change-Id: I630159f4e3520a1fc124172326c7dd14495b0524
145 lines
5.5 KiB
Makefile
145 lines
5.5 KiB
Makefile
# APP INFO
|
|
BUILD_DIR := $(shell mktemp -d)
|
|
DOCKER_REGISTRY ?= quay.io
|
|
IMAGE_PREFIX ?= airshipit
|
|
IMAGE_NAME ?= armada-go
|
|
IMAGE_TAG ?= latest
|
|
PROXY ?= http://proxy.foo.com:8000
|
|
NO_PROXY ?= localhost,127.0.0.1,.svc.cluster.local
|
|
USE_PROXY ?= false
|
|
PUSH_IMAGE ?= false
|
|
# use this variable for image labels added in internal build process
|
|
LABEL ?= org.airshipit.build=community
|
|
COMMIT ?= $(shell git rev-parse HEAD)
|
|
PYTHON = python3
|
|
CHARTS := $(filter-out deps, $(patsubst charts/%/.,%,$(wildcard charts/*/.)))
|
|
DISTRO ?= ubuntu_jammy
|
|
DISTRO_ALIAS ?= ubuntu_focal
|
|
IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}-${DISTRO}
|
|
IMAGE_ALIAS := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}-${DISTRO_ALIAS}
|
|
UBUNTU_BASE_IMAGE ?=
|
|
# VERSION INFO
|
|
GIT_COMMIT = $(shell git rev-parse HEAD)
|
|
GIT_SHA = $(shell git rev-parse --short HEAD)
|
|
GIT_TAG = $(shell git describe --tags --abbrev=0 --exact-match 2>/dev/null)
|
|
GIT_DIRTY = $(shell test -n "`git status --porcelain`" && echo "dirty" || echo "clean")
|
|
ifdef VERSION
|
|
DOCKER_VERSION = $(VERSION)
|
|
endif
|
|
SHELL = /bin/bash
|
|
info:
|
|
@echo "Version: ${VERSION}"
|
|
@echo "Git Tag: ${GIT_TAG}"
|
|
@echo "Git Commit: ${GIT_COMMIT}"
|
|
@echo "Git Tree State: ${GIT_DIRTY}"
|
|
@echo "Docker Version: ${DOCKER_VERSION}"
|
|
@echo "Registry: ${DOCKER_REGISTRY}"
|
|
|
|
# Image URL to use all building/pushing image targets
|
|
IMG ?= quay.io/airshipit/armada-go:latest
|
|
# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.
|
|
ENVTEST_K8S_VERSION = 1.28.0
|
|
|
|
# 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
|
|
|
|
# CONTAINER_TOOL defines the container tool to be used for building images.
|
|
# Be aware that the target commands are only tested with Docker which is
|
|
# scaffolded by default. However, you might want to replace it to use other
|
|
# tools. (i.e. podman)
|
|
CONTAINER_TOOL ?= docker
|
|
|
|
# Setting SHELL to bash allows bash commands to be executed by recipes.
|
|
# 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
|
|
|
|
.PHONY: all
|
|
all: build
|
|
|
|
##@ General
|
|
|
|
# The help target prints out all targets with their descriptions organized
|
|
# beneath their categories. The categories are represented by '##@' and the
|
|
# target descriptions by '##'. The awk command is responsible for reading the
|
|
# entire set of makefiles included in this invocation, looking for lines of the
|
|
# file as xyz: ## something, and then pretty-format the target and help. Then,
|
|
# if there's a line with ##@ something, that gets pretty-printed as a category.
|
|
# More info on the usage of ANSI control characters for terminal formatting:
|
|
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
|
|
# More info on the awk command:
|
|
# http://linuxcommand.org/lc3_adv_awk.php
|
|
|
|
.PHONY: help
|
|
help: ## Display this help.
|
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
|
|
|
|
##@ Build
|
|
|
|
.PHONY: build
|
|
build: ## Build manager binary.
|
|
go build -o bin/armada-go main.go
|
|
|
|
.PHONY: run
|
|
run: ## Run a controller from your host.
|
|
go run main.go
|
|
|
|
# If you wish to build the manager image targeting other platforms you can use the --platform flag.
|
|
# (i.e. docker build --platform linux/arm64). However, you must enable docker buildKit for it.
|
|
# More info: https://docs.docker.com/develop/develop-images/build_enhancements/
|
|
.PHONY: docker-build
|
|
docker-build: ## Build docker image with the manager.
|
|
$(CONTAINER_TOOL) build -t ${IMG} .
|
|
|
|
.PHONY: docker-push
|
|
docker-push: ## Push docker image with the manager.
|
|
$(CONTAINER_TOOL) push ${IMG}
|
|
|
|
check-docker:
|
|
@if [ -z $$(which docker) ]; then \
|
|
echo "Missing \`docker\` client which is required for development"; \
|
|
exit 2; \
|
|
fi
|
|
images: check-docker build_armada_go
|
|
_BASE_IMAGE_ARG := $(if $(UBUNTU_BASE_IMAGE),--build-arg FROM="${UBUNTU_BASE_IMAGE}" ,)
|
|
build_armada_go:
|
|
ifeq ($(USE_PROXY), true)
|
|
docker build --network host -t $(IMAGE) --label $(LABEL) \
|
|
--label "org.opencontainers.image.revision=$(COMMIT)" \
|
|
--label "org.opencontainers.image.created=$(shell date --rfc-3339=seconds --utc)" \
|
|
--label "org.opencontainers.image.title=$(IMAGE_NAME)" \
|
|
-f images/armada-go/Dockerfile.$(DISTRO) \
|
|
$(_BASE_IMAGE_ARG) \
|
|
--build-arg http_proxy=$(PROXY) \
|
|
--build-arg https_proxy=$(PROXY) \
|
|
--build-arg HTTP_PROXY=$(PROXY) \
|
|
--build-arg HTTPS_PROXY=$(PROXY) \
|
|
--build-arg no_proxy=$(NO_PROXY) \
|
|
--build-arg NO_PROXY=$(NO_PROXY) .
|
|
else
|
|
docker build --network host -t $(IMAGE) --label $(LABEL) \
|
|
--label "org.opencontainers.image.revision=$(COMMIT)" \
|
|
--label "org.opencontainers.image.created=$(shell date --rfc-3339=seconds --utc)" \
|
|
--label "org.opencontainers.image.title=$(IMAGE_NAME)" \
|
|
-f images/armada-go/Dockerfile.$(DISTRO) \
|
|
$(_BASE_IMAGE_ARG) \
|
|
--build-arg HELM_ARTIFACT_URL=$(HELM_ARTIFACT_URL) .
|
|
endif
|
|
ifneq ($(DISTRO), $(DISTRO_ALIAS))
|
|
docker tag $(IMAGE) $(IMAGE_ALIAS)
|
|
ifeq ($(DOCKER_REGISTRY), localhost:5000)
|
|
docker push $(IMAGE_ALIAS)
|
|
endif
|
|
endif
|
|
ifeq ($(DOCKER_REGISTRY), localhost:5000)
|
|
docker push $(IMAGE)
|
|
endif
|
|
ifeq ($(PUSH_IMAGE), true)
|
|
docker push $(IMAGE)
|
|
endif
|
|
|