24
24
SHELL: =/usr/bin/env bash
25
25
.DEFAULT_GOAL: =help
26
26
27
+ #
28
+ # Go.
29
+ #
30
+ GO_VERSION ?= 1.22.5
31
+
27
32
# Use GOPROXY environment variable if set
28
33
GOPROXY := $(shell go env GOPROXY)
29
34
ifeq ($(GOPROXY ) ,)
@@ -34,6 +39,13 @@ export GOPROXY
34
39
# Active module mode, as we use go modules to manage dependencies
35
40
export GO111MODULE =on
36
41
42
+ # Hosts running SELinux need :z added to volume mounts
43
+ SELINUX_ENABLED := $(shell cat /sys/fs/selinux/enforce 2> /dev/null || echo 0)
44
+
45
+ ifeq ($(SELINUX_ENABLED ) ,1)
46
+ DOCKER_VOL_OPTS? =:z
47
+ endif
48
+
37
49
# Tools.
38
50
ENVTEST_DIR := hack/envtest
39
51
ENVTEST_MATRIX_DIR := $(ENVTEST_DIR ) /_matrix
@@ -100,7 +112,7 @@ clean-release: ## Remove all generated release binaries.
100
112
rm -rf $(RELEASE_DIR )
101
113
102
114
# # --------------------------------------
103
- # # Envtest Build
115
+ # # Release
104
116
# # --------------------------------------
105
117
106
118
RELEASE_DIR := out
@@ -135,3 +147,37 @@ release-envtest-docker-build: $(RELEASE_DIR) ## Build the envtest binaries.
135
147
--tag sigs.k8s.io/controller-tools/envtest:$(KUBERNETES_VERSION ) -$(OS ) -$(ARCH ) \
136
148
--output type=local,dest=$(RELEASE_DIR ) \
137
149
.
150
+
151
+ .PHONY : release-controller-gen
152
+ release-controller-gen : clean-release # # Build controller-gen binaries.
153
+ RELEASE_BINARY=controller-gen-linux-amd64 GOOS=linux GOARCH=amd64 $(MAKE ) release-binary
154
+ RELEASE_BINARY=controller-gen-linux-arm64 GOOS=linux GOARCH=arm64 $(MAKE ) release-binary
155
+ RELEASE_BINARY=controller-gen-linux-ppc64le GOOS=linux GOARCH=ppc64le $(MAKE ) release-binary
156
+ RELEASE_BINARY=controller-gen-linux-s390x GOOS=linux GOARCH=s390x $(MAKE ) release-binary
157
+ RELEASE_BINARY=controller-gen-darwin-amd64 GOOS=darwin GOARCH=amd64 $(MAKE ) release-binary
158
+ RELEASE_BINARY=controller-gen-darwin-arm64 GOOS=darwin GOARCH=arm64 $(MAKE ) release-binary
159
+ RELEASE_BINARY=controller-gen-windows-amd64.exe GOOS=windows GOARCH=amd64 $(MAKE ) release-binary
160
+
161
+ .PHONY : release-binary
162
+ release-binary : $(RELEASE_DIR )
163
+ docker run \
164
+ --rm \
165
+ -e CGO_ENABLED=0 \
166
+ -e GOOS=$(GOOS ) \
167
+ -e GOARCH=$(GOARCH ) \
168
+ -e GOCACHE=/tmp/ \
169
+ --user $$(id -u ) :$$(id -g ) \
170
+ -v " $$ (pwd):/workspace$( DOCKER_VOL_OPTS) " \
171
+ -w /workspace \
172
+ golang:$(GO_VERSION ) \
173
+ go build -a -trimpath -ldflags " -extldflags '-static'" \
174
+ -o ./out/$(RELEASE_BINARY ) ./cmd/controller-gen
175
+
176
+ # # --------------------------------------
177
+ # # Helpers
178
+ # # --------------------------------------
179
+
180
+ # #@ helpers:
181
+
182
+ go-version : # # Print the go version we use to compile our binaries and images
183
+ @echo $(GO_VERSION )
0 commit comments