-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathMakefile
More file actions
154 lines (124 loc) · 5.71 KB
/
Makefile
File metadata and controls
154 lines (124 loc) · 5.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and Gardener contributors
#
# SPDX-License-Identifier: Apache-2.0
ENSURE_GARDENER_MOD := $(shell go get github.com/gardener/gardener@$$(go list -m -f "{{.Version}}" github.com/gardener/gardener))
GARDENER_HACK_DIR := $(shell go list -m -f "{{.Dir}}" github.com/gardener/gardener)/hack
EXTENSION_PREFIX := gardener-extension
NAME := runtime-gvisor
NAME_INSTALLATION := runtime-gvisor-installation
CMD_DIRECTORY := ./cmd/$(EXTENSION_PREFIX)-$(NAME)
REGISTRY := europe-docker.pkg.dev/gardener-project/public/gardener
IMAGE_PREFIX := $(REGISTRY)/extensions
REPO_ROOT := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
HACK_DIR := $(REPO_ROOT)/hack
VERSION := $(shell cat "$(REPO_ROOT)/VERSION")
EFFECTIVE_VERSION := $(VERSION)-$(shell git rev-parse HEAD)
LD_FLAGS_GENERATOR := $(GARDENER_HACK_DIR)/get-build-ld-flags.sh
IGNORE_OPERATION_ANNOTATION := true
PLATFORM := linux/amd64
ifneq ($(strip $(shell git status --porcelain 2>/dev/null)),)
EFFECTIVE_VERSION := $(EFFECTIVE_VERSION)-dirty
endif
LD_FLAGS := $(shell chmod +x $(LD_FLAGS_GENERATOR) && EFFECTIVE_VERSION=$(EFFECTIVE_VERSION) $(LD_FLAGS_GENERATOR) k8s.io/component-base $(REPO_ROOT)/VERSION $(EXTENSION_PREFIX))
### GVisor versions
# - https://github.com/google/gvisor/tags (not all Github tags are available in the registry)
# - https://gvisor.dev/docs/user_guide/install/
# To update the runsc + shim binary:
# 1) Download latest: https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/runsc
# 2) Execute runsc --version to find version
# 3) Check that specific release can be downloaded: https://storage.googleapis.com/gvisor/releases/release/20230102.0/x86_64/runsc
# 4) Update version in GVISOR_VERSION file
GVISOR_VERSION := $(shell cat GVISOR_VERSION)
#########################################
# Tools #
#########################################
TOOLS_DIR := $(HACK_DIR)/tools
include $(GARDENER_HACK_DIR)/tools.mk
#################################################################
# Rules related to binary build, Docker image build and release #
#################################################################
.PHONY: install
install:
@LD_FLAGS="$(LD_FLAGS)" \
bash $(GARDENER_HACK_DIR)/install.sh ./...
.PHONY: install-binaries
install-binaries:
$(HACK_DIR)/install-binaries.sh $(GVISOR_VERSION)
.PHONY: docker-login
docker-login:
@gcloud auth activate-service-account --key-file .kube-secrets/gcr/gcr-readwrite.json
.PHONY: docker-image-runtime
docker-image-runtime:
@docker buildx build --platform=$(PLATFORM) \
--build-arg EFFECTIVE_VERSION=$(EFFECTIVE_VERSION) \
-t $(IMAGE_PREFIX)/$(NAME):$(EFFECTIVE_VERSION) \
-t $(IMAGE_PREFIX)/$(NAME):latest \
-f Dockerfile \
-m 6g \
--target $(EXTENSION_PREFIX)-$(NAME) \
.
.PHONY: docker-image-installation
docker-image-installation:
@docker buildx build --platform=$(PLATFORM) \
-t $(IMAGE_PREFIX)/$(NAME_INSTALLATION):$(EFFECTIVE_VERSION) \
-t $(IMAGE_PREFIX)/$(NAME_INSTALLATION):latest \
-f Dockerfile \
-m 6g \
--target $(EXTENSION_PREFIX)-$(NAME_INSTALLATION) \
.
.PHONY: docker-images
docker-images: docker-image-installation docker-image-runtime
#####################################################################
# Rules for verification, formatting, linting, testing and cleaning #
#####################################################################
.PHONY: tidy
tidy:
@GO111MODULE=on go mod tidy
@GARDENER_HACK_DIR=$(GARDENER_HACK_DIR) $(REPO_ROOT)/hack/update-github-templates.sh
@cp $(GARDENER_HACK_DIR)/cherry-pick-pull.sh $(HACK_DIR)/cherry-pick-pull.sh && chmod +xw $(HACK_DIR)/cherry-pick-pull.sh
.PHONY: clean
clean:
@$(shell find ./example -type f -name "controller-registration.yaml" -exec rm '{}' \;)
@bash $(GARDENER_HACK_DIR)/clean.sh ./cmd/... ./pkg/...
.PHONY: check-generate
check-generate:
@bash $(GARDENER_HACK_DIR)/check-generate.sh $(REPO_ROOT)
.PHONY: check
check: $(GOIMPORTS) $(GOLANGCI_LINT) $(HELM)
@REPO_ROOT=$(REPO_ROOT) bash $(GARDENER_HACK_DIR)/check.sh --golangci-lint-config=./.golangci.yaml ./cmd/... ./pkg/...
@REPO_ROOT=$(REPO_ROOT) bash $(GARDENER_HACK_DIR)/check-charts.sh ./charts
.PHONY: generate
generate: $(CONTROLLER_GEN) $(EXTENSION_GEN) $(CRD_REF_DOCS) $(HELM) $(KUSTOMIZE) $(MOCKGEN) $(YQ)
@REPO_ROOT=$(REPO_ROOT) GARDENER_HACK_DIR=$(GARDENER_HACK_DIR) bash $(GARDENER_HACK_DIR)/generate-sequential.sh ./charts/... ./cmd/... ./example/... ./pkg/...
$(MAKE) format
.PHONY: format
format: $(GOIMPORTS) $(GOIMPORTSREVISER)
@bash $(GARDENER_HACK_DIR)/format.sh ./cmd ./pkg
.PHONY: add-license-headers
add-license-headers: $(GO_ADD_LICENSE)
@REPO_ROOT=$(REPO_ROOT) bash $(GARDENER_HACK_DIR)/add-license-header.sh
.PHONY: check-license-headers
check-license-headers: $(GO_ADD_LICENSE)
@REPO_ROOT=$(REPO_ROOT) bash $(GARDENER_HACK_DIR)/check-license-header.sh
.PHONY: sast
sast: $(GOSEC)
@./hack/sast.sh
.PHONY: sast-report
sast-report: $(GOSEC)
@./hack/sast.sh --gosec-report true
.PHONY: test
test:
@bash $(GARDENER_HACK_DIR)/test.sh ./cmd/... ./pkg/...
.PHONY: test-cov
test-cov:
@bash $(GARDENER_HACK_DIR)/test-cover.sh ./cmd/... ./pkg/...
.PHONY: test-cov-clean
test-cov-clean:
@bash $(GARDENER_HACK_DIR)/test-cover-clean.sh
.PHONY: verify
verify: check format sast test check-license-headers
.PHONY: verify-extended
verify-extended: check-generate check format sast-report test-cov test-cov-clean check-license-headers
.PHONY: start
start:
@./hack/start-gvisor-extension.sh -l "$(LD_FLAGS)" -d "$(CMD_DIRECTORY)" -i "$(IGNORE_OPERATION_ANNOTATION)" -r "$(REPO_ROOT)"