mirror of
https://github.com/kubernetes-sigs/descheduler.git
synced 2026-01-25 20:59:28 +01:00
180 lines
5.5 KiB
Makefile
180 lines
5.5 KiB
Makefile
# Copyright 2017 The Kubernetes 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.
|
|
|
|
.PHONY: test
|
|
|
|
export CONTAINER_ENGINE ?= docker
|
|
|
|
# VERSION is based on a date stamp plus the last commit
|
|
VERSION?=v$(shell date +%Y%m%d)-$(shell git describe --tags)
|
|
BRANCH?=$(shell git branch --show-current)
|
|
SHA1?=$(shell git rev-parse HEAD)
|
|
BUILD=$(shell date +%FT%T%z)
|
|
LDFLAG_LOCATION=sigs.k8s.io/descheduler/pkg/version
|
|
ARCHS = amd64 arm arm64
|
|
|
|
LDFLAGS=-ldflags "-X ${LDFLAG_LOCATION}.version=${VERSION} -X ${LDFLAG_LOCATION}.buildDate=${BUILD} -X ${LDFLAG_LOCATION}.gitbranch=${BRANCH} -X ${LDFLAG_LOCATION}.gitsha1=${SHA1}"
|
|
|
|
GOLANGCI_VERSION := v1.64.8
|
|
HAS_GOLANGCI := $(shell ls _output/bin/golangci-lint 2> /dev/null)
|
|
|
|
GOFUMPT_VERSION := v0.7.0
|
|
HAS_GOFUMPT := $(shell command -v gofumpt 2> /dev/null)
|
|
|
|
GO_VERSION := $(shell (command -v jq > /dev/null && (go mod edit -json | jq -r .Go)) || (sed -En 's/^go (.*)$$/\1/p' go.mod))
|
|
|
|
# REGISTRY is the container registry to push
|
|
# into. The default is to push to the staging
|
|
# registry, not production.
|
|
REGISTRY?=gcr.io/k8s-staging-descheduler
|
|
|
|
# IMAGE is the image name of descheduler
|
|
IMAGE:=descheduler:$(VERSION)
|
|
|
|
# IMAGE_GCLOUD is the image name of descheduler in the remote registry
|
|
IMAGE_GCLOUD:=$(REGISTRY)/descheduler:$(VERSION)
|
|
|
|
# CURRENT_DIR is the current dir where the Makefile exists
|
|
CURRENT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
|
|
|
|
|
# TODO: upload binaries to GCS bucket
|
|
#
|
|
# In the future binaries can be uploaded to
|
|
# GCS bucket gs://k8s-staging-descheduler.
|
|
|
|
HAS_HELM := $(shell which helm 2> /dev/null)
|
|
|
|
all: build
|
|
|
|
build:
|
|
CGO_ENABLED=0 go build ${LDFLAGS} -o _output/bin/descheduler sigs.k8s.io/descheduler/cmd/descheduler
|
|
|
|
build.amd64:
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o _output/bin/descheduler sigs.k8s.io/descheduler/cmd/descheduler
|
|
|
|
build.arm:
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build ${LDFLAGS} -o _output/bin/descheduler sigs.k8s.io/descheduler/cmd/descheduler
|
|
|
|
build.arm64:
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${LDFLAGS} -o _output/bin/descheduler sigs.k8s.io/descheduler/cmd/descheduler
|
|
|
|
dev-image: build
|
|
$(CONTAINER_ENGINE) build -f Dockerfile.dev -t $(IMAGE) .
|
|
|
|
image:
|
|
$(CONTAINER_ENGINE) build --build-arg VERSION="$(VERSION)" --build-arg ARCH="amd64" -t $(IMAGE) .
|
|
|
|
image.amd64:
|
|
$(CONTAINER_ENGINE) build --build-arg VERSION="$(VERSION)" --build-arg ARCH="amd64" -t $(IMAGE)-amd64 .
|
|
|
|
image.arm:
|
|
$(CONTAINER_ENGINE) build --build-arg VERSION="$(VERSION)" --build-arg ARCH="arm" -t $(IMAGE)-arm .
|
|
|
|
image.arm64:
|
|
$(CONTAINER_ENGINE) build --build-arg VERSION="$(VERSION)" --build-arg ARCH="arm64" -t $(IMAGE)-arm64 .
|
|
|
|
push: image
|
|
gcloud auth configure-docker
|
|
$(CONTAINER_ENGINE) tag $(IMAGE) $(IMAGE_GCLOUD)
|
|
$(CONTAINER_ENGINE) push $(IMAGE_GCLOUD)
|
|
|
|
push-all: image.amd64 image.arm image.arm64
|
|
gcloud auth configure-docker
|
|
for arch in $(ARCHS); do \
|
|
$(CONTAINER_ENGINE) tag $(IMAGE)-$${arch} $(IMAGE_GCLOUD)-$${arch} ;\
|
|
$(CONTAINER_ENGINE) push $(IMAGE_GCLOUD)-$${arch} ;\
|
|
done
|
|
DOCKER_CLI_EXPERIMENTAL=enabled $(CONTAINER_ENGINE) manifest create $(IMAGE_GCLOUD) $(addprefix --amend $(IMAGE_GCLOUD)-, $(ARCHS))
|
|
for arch in $(ARCHS); do \
|
|
DOCKER_CLI_EXPERIMENTAL=enabled $(CONTAINER_ENGINE) manifest annotate --arch $${arch} $(IMAGE_GCLOUD) $(IMAGE_GCLOUD)-$${arch} ;\
|
|
done
|
|
DOCKER_CLI_EXPERIMENTAL=enabled $(CONTAINER_ENGINE) manifest push $(IMAGE_GCLOUD) ;\
|
|
|
|
clean:
|
|
rm -rf _output
|
|
rm -rf _tmp
|
|
|
|
verify: verify-govet verify-spelling verify-gofmt verify-vendor lint lint-chart verify-gen
|
|
|
|
verify-govet:
|
|
./hack/verify-govet.sh
|
|
|
|
verify-spelling:
|
|
./hack/verify-spelling.sh
|
|
|
|
verify-gofmt:
|
|
./hack/verify-gofmt.sh
|
|
|
|
verify-vendor:
|
|
./hack/verify-vendor.sh
|
|
|
|
verify-docs:
|
|
./hack/verify-docs.sh
|
|
|
|
test-unit:
|
|
./test/run-unit-tests.sh
|
|
|
|
test-e2e:
|
|
./test/run-e2e-tests.sh
|
|
|
|
gen:
|
|
./hack/update-generated-conversions.sh
|
|
./hack/update-generated-deep-copies.sh
|
|
./hack/update-generated-defaulters.sh
|
|
./hack/update-docs.sh
|
|
|
|
gen-docker:
|
|
$(CONTAINER_ENGINE) run --entrypoint make -it -v $(CURRENT_DIR):/go/src/sigs.k8s.io/descheduler -w /go/src/sigs.k8s.io/descheduler golang:$(GO_VERSION) gen
|
|
|
|
verify-gen:
|
|
./hack/verify-conversions.sh
|
|
./hack/verify-deep-copies.sh
|
|
./hack/verify-defaulters.sh
|
|
./hack/verify-docs.sh
|
|
|
|
lint:
|
|
ifndef HAS_GOLANGCI
|
|
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ./_output/bin ${GOLANGCI_VERSION}
|
|
endif
|
|
./_output/bin/golangci-lint run -v
|
|
|
|
fmt:
|
|
ifndef HAS_GOFUMPT
|
|
go install mvdan.cc/gofumpt@${GOFUMPT_VERSION}
|
|
endif
|
|
gofumpt -w -extra .
|
|
|
|
# helm
|
|
|
|
ensure-helm-install:
|
|
ifndef HAS_HELM
|
|
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 && chmod 700 ./get_helm.sh && ./get_helm.sh
|
|
endif
|
|
|
|
lint-chart: ensure-helm-install
|
|
helm lint ./charts/descheduler
|
|
|
|
build-helm:
|
|
helm package ./charts/descheduler --dependency-update --destination ./bin/chart
|
|
|
|
test-helm: ensure-helm-install
|
|
./test/run-helm-tests.sh
|
|
|
|
kind-multi-node:
|
|
kind create cluster --name kind --config ./hack/kind_config.yaml --wait 2m
|
|
|
|
ct-helm:
|
|
./hack/verify-chart.sh
|