Skip to content

Commit 551f73f

Browse files
committed
update build logic
1 parent 1b50bf9 commit 551f73f

8 files changed

+167
-93
lines changed

.project

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ kind: ProjectOperator
1010
kubernetesVersion: v0.27.2
1111
mutatingWebhookEnabled: false
1212
operatorName: project-operator-cop.cs.sap.com
13-
owner: SAP SE
13+
owner: SAP SE or an SAP affiliate company and project-operator-cop contributors
1414
resource: projectoperators
15+
spdxLicenseHeaders: true
1516
validatingWebhookEnabled: false
1617
version: v0.1.4

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the manager binary
2-
FROM --platform=$BUILDPLATFORM golang:1.23 as builder
2+
FROM --platform=$BUILDPLATFORM golang:1.23.4 AS builder
33
ARG TARGETOS
44
ARG TARGETARCH
55

Makefile

+47-56
Original file line numberDiff line numberDiff line change
@@ -13,62 +13,65 @@ all: build
1313
##@ General
1414

1515
.PHONY: help
16-
help: ## Display this help.
17-
@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)
16+
help: ## Display this help
17+
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
1818

1919
##@ Development
2020

2121
.PHONY: manifests
22-
manifests: controller-gen ## Generate CustomResourceDefinition objects.
23-
$(CONTROLLER_GEN) crd paths="./api/..." output:crd:artifacts:config=crds ;\
22+
manifests: controller-gen ## Generate CustomResourceDefinition objects
23+
$(LOCALBIN)/controller-gen crd paths="./api/..." output:crd:artifacts:config=crds && \
2424
test ! -d chart || test -e chart/crds || ln -s ../crds chart/crds
2525

2626
.PHONY: generate
27-
generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
28-
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./api/..."
27+
generate: generate-deepcopy ## Generate required code pieces
28+
29+
.PHONY: generate-deepcopy
30+
generate-deepcopy: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations
31+
$(LOCALBIN)/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./api/..."
2932

3033
.PHONY: generate-client
31-
generate-client: client-gen informer-gen lister-gen ## Generate typed client.
34+
generate-client: ## Generate typed client
3235
./hack/genclient.sh
3336

3437
.PHONY: fmt
35-
fmt: ## Run go fmt against code.
38+
fmt: ## Run go fmt against code
3639
go fmt ./...
3740

3841
.PHONY: vet
39-
vet: ## Run go vet against code.
42+
vet: ## Run go vet against code
4043
go vet ./...
4144

4245
##@ Testing
4346

4447
.PHONY: test
45-
test: manifests generate fmt vet envtest ## Run tests.
48+
test: manifests generate-deepcopy fmt vet envtest ## Run tests
4649
KUBEBUILDER_ASSETS="$(LOCALBIN)/k8s/current" go test ./... -coverprofile cover.out
4750

4851
##@ Build
4952

5053
.PHONY: build
51-
build: generate fmt vet ## Build manager binary.
54+
build: generate-deepcopy fmt vet ## Build manager binary
5255
go build -o bin/manager main.go
5356

5457
.PHONY: run
55-
run: manifests generate fmt vet ## Run a controller from your host.
58+
run: manifests generate-deepcopy fmt vet ## Run a controller from your host
5659
go run ./main.go
5760

58-
# Build docker image in current architecture and tag it as ${IMG}.
61+
# Build docker image in current architecture and tag it as ${IMG}
5962
.PHONY: docker-build
60-
docker-build: ## Build docker image with the manager.
63+
docker-build: ## Build docker image with the manager
6164
docker build -t ${IMG} .
6265

63-
# Push docker image to the target specified in ${IMG}.
66+
# Push docker image to the target specified in ${IMG}
6467
.PHONY: docker-push
65-
docker-push: ## Push docker image with the manager.
68+
docker-push: ## Push docker image with the manager
6669
docker push ${IMG}
6770

68-
# Build and push docker image for all given platforms.
71+
# Build and push docker image for all given platforms
6972
PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
7073
.PHONY: docker-buildx
71-
docker-buildx: ## Build and push docker image for the manager for cross-platform support.
74+
docker-buildx: ## Build and push docker image for the manager for cross-platform support
7275
- docker buildx create --name project-v3-builder
7376
docker buildx use project-v3-builder
7477
- docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} .
@@ -79,53 +82,41 @@ docker-buildx: ## Build and push docker image for the manager for cross-platform
7982
## Location to install dependencies to
8083
LOCALBIN ?= $(shell pwd)/bin
8184
$(LOCALBIN):
82-
mkdir -p $(LOCALBIN)
83-
84-
## Tool Binaries
85-
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
86-
CLIENT_GEN ?= $(LOCALBIN)/client-gen
87-
INFORMER_GEN ?= $(LOCALBIN)/informer-gen
88-
LISTER_GEN ?= $(LOCALBIN)/lister-gen
89-
SETUP_ENVTEST ?= $(LOCALBIN)/setup-envtest
90-
91-
## Tool Versions
92-
CONTROLLER_TOOLS_VERSION ?= v0.16.1
93-
CODE_GENERATOR_VERSION ?= v0.29.8
94-
SETUP_ENVTEST_VERSION ?= latest
85+
@mkdir -p $(LOCALBIN)
9586

9687
.PHONY: controller-gen
97-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
98-
$(CONTROLLER_GEN): $(LOCALBIN)
99-
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
100-
101-
.PHONY: client-gen
102-
client-gen: $(CLIENT_GEN) ## Download client-gen locally if necessary.
103-
$(CLIENT_GEN): $(LOCALBIN)
104-
test -s $(LOCALBIN)/client-gen || GOBIN=$(LOCALBIN) go install k8s.io/code-generator/cmd/client-gen@$(CODE_GENERATOR_VERSION)
105-
106-
.PHONY: informer-gen
107-
informer-gen: $(INFORMER_GEN) ## Download informer-gen locally if necessary.
108-
$(INFORMER_GEN): $(LOCALBIN)
109-
test -s $(LOCALBIN)/informer-gen || GOBIN=$(LOCALBIN) go install k8s.io/code-generator/cmd/informer-gen@$(CODE_GENERATOR_VERSION)
110-
111-
.PHONY: lister-gen
112-
lister-gen: $(LISTER_GEN) ## Download lister-gen locally if necessary.
113-
$(LISTER_GEN): $(LOCALBIN)
114-
test -s $(LOCALBIN)/lister-gen || GOBIN=$(LOCALBIN) go install k8s.io/code-generator/cmd/lister-gen@$(CODE_GENERATOR_VERSION)
88+
controller-gen: $(LOCALBIN) ## Install controller-gen
89+
@go mod download sigs.k8s.io/controller-tools && \
90+
VERSION=$$(go list -m -f '{{.Version}}' sigs.k8s.io/controller-tools) && \
91+
if [ ! -L $(LOCALBIN)/controller-gen ] || [ "$$(readlink $(LOCALBIN)/controller-gen)" != "controller-gen-$$VERSION" ]; then \
92+
echo "Installing controller-gen $$VERSION" && \
93+
rm -f $(LOCALBIN)/controller-gen && \
94+
GOBIN=$(LOCALBIN) go install $$(go list -m -f '{{.Dir}}' sigs.k8s.io/controller-tools)/cmd/controller-gen && \
95+
mv $(LOCALBIN)/controller-gen $(LOCALBIN)/controller-gen-$$VERSION && \
96+
ln -s controller-gen-$$VERSION $(LOCALBIN)/controller-gen; \
97+
fi
11598

11699
.PHONY: setup-envtest
117-
setup-envtest: $(SETUP_ENVTEST) ## Download setup-envtest locally if necessary.
118-
$(SETUP_ENVTEST): $(LOCALBIN)
119-
test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@$(SETUP_ENVTEST_VERSION)
100+
setup-envtest: $(LOCALBIN) ## Install setup-envtest
101+
@go mod download sigs.k8s.io/controller-runtime/tools/setup-envtest && \
102+
VERSION=$$(go list -m -f '{{.Version}}' sigs.k8s.io/controller-runtime/tools/setup-envtest) && \
103+
if [ ! -L $(LOCALBIN)/setup-envtest ] || [ "$$(readlink $(LOCALBIN)/setup-envtest)" != "setup-envtest-$$VERSION" ]; then \
104+
echo "Installing setup-envtest $$VERSION" && \
105+
rm -f $(LOCALBIN)/setup-envtest && \
106+
GOBIN=$(LOCALBIN) go install $$(go list -m -f '{{.Dir}}' sigs.k8s.io/controller-runtime/tools/setup-envtest) && \
107+
mv $(LOCALBIN)/setup-envtest $(LOCALBIN)/setup-envtest-$$VERSION && \
108+
ln -s setup-envtest-$$VERSION $(LOCALBIN)/setup-envtest; \
109+
fi
120110

121111
.PHONY: envtest
122-
envtest: setup-envtest
123-
ENVTESTDIR=$$($(SETUP_ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path) ;\
124-
chmod -R u+w $$ENVTESTDIR ;\
125-
rm -f $(LOCALBIN)/k8s/current ;\
112+
envtest: setup-envtest ## Install envtest binaries
113+
@ENVTESTDIR=$$($(LOCALBIN)/setup-envtest use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path) && \
114+
chmod -R u+w $$ENVTESTDIR && \
115+
rm -f $(LOCALBIN)/k8s/current && \
126116
ln -s $$ENVTESTDIR $(LOCALBIN)/k8s/current
127117

128118
##@ Manage Content
119+
129120
.PHONY: update-content
130121
update-content: ## Update external resources used by this repository.
131122
rm -rf pkg/operator/data/charts

crds/operator.kyma-project.io_projectoperators.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.16.1
6+
controller-gen.kubebuilder.io/version: v0.16.5
77
name: projectoperators.operator.kyma-project.io
88
spec:
99
group: operator.kyma-project.io

go.mod

+15
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@ require (
99
k8s.io/apiextensions-apiserver v0.32.0
1010
k8s.io/apimachinery v0.32.0
1111
k8s.io/client-go v0.32.0
12+
k8s.io/code-generator v0.32.0
1213
k8s.io/kube-aggregator v0.32.0
1314
sigs.k8s.io/controller-runtime v0.19.3
15+
sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20241227172013-a9b7c2dd8a97
16+
sigs.k8s.io/controller-tools v0.16.5
1417
)
1518

1619
require (
@@ -23,12 +26,14 @@ require (
2326
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
2427
github.com/emicklei/go-restful/v3 v3.11.2 // indirect
2528
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
29+
github.com/fatih/color v1.18.0 // indirect
2630
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
2731
github.com/go-logr/logr v1.4.2 // indirect
2832
github.com/go-logr/zapr v1.3.0 // indirect
2933
github.com/go-openapi/jsonpointer v0.21.0 // indirect
3034
github.com/go-openapi/jsonreference v0.20.4 // indirect
3135
github.com/go-openapi/swag v0.23.0 // indirect
36+
github.com/gobuffalo/flect v1.0.3 // indirect
3237
github.com/gogo/protobuf v1.3.2 // indirect
3338
github.com/golang/protobuf v1.5.4 // indirect
3439
github.com/google/gnostic-models v0.6.8 // indirect
@@ -39,10 +44,13 @@ require (
3944
github.com/hashicorp/go-multierror v1.1.1 // indirect
4045
github.com/huandu/xstrings v1.5.0 // indirect
4146
github.com/iancoleman/strcase v0.3.0 // indirect
47+
github.com/inconshreveable/mousetrap v1.1.0 // indirect
4248
github.com/josharian/intern v1.0.0 // indirect
4349
github.com/json-iterator/go v1.1.12 // indirect
4450
github.com/klauspost/compress v1.17.9 // indirect
4551
github.com/mailru/easyjson v0.7.7 // indirect
52+
github.com/mattn/go-colorable v0.1.13 // indirect
53+
github.com/mattn/go-isatty v0.0.20 // indirect
4654
github.com/mitchellh/copystructure v1.2.0 // indirect
4755
github.com/mitchellh/reflectwalk v1.0.2 // indirect
4856
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
@@ -54,25 +62,32 @@ require (
5462
github.com/prometheus/procfs v0.15.1 // indirect
5563
github.com/sap/go-generics v0.2.21 // indirect
5664
github.com/shopspring/decimal v1.4.0 // indirect
65+
github.com/spf13/afero v1.6.0 // indirect
5766
github.com/spf13/cast v1.7.1 // indirect
67+
github.com/spf13/cobra v1.8.1 // indirect
5868
github.com/spf13/pflag v1.0.5 // indirect
5969
github.com/x448/float16 v0.8.4 // indirect
6070
go.uber.org/multierr v1.11.0 // indirect
6171
go.uber.org/zap v1.27.0 // indirect
6272
golang.org/x/crypto v0.31.0 // indirect
6373
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
74+
golang.org/x/mod v0.22.0 // indirect
6475
golang.org/x/net v0.33.0 // indirect
6576
golang.org/x/oauth2 v0.23.0 // indirect
77+
golang.org/x/sync v0.10.0 // indirect
6678
golang.org/x/sys v0.28.0 // indirect
6779
golang.org/x/term v0.27.0 // indirect
6880
golang.org/x/text v0.21.0 // indirect
6981
golang.org/x/time v0.8.0 // indirect
82+
golang.org/x/tools v0.28.0 // indirect
7083
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
7184
google.golang.org/protobuf v1.36.1 // indirect
7285
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
7386
gopkg.in/inf.v0 v0.9.1 // indirect
87+
gopkg.in/yaml.v2 v2.4.0 // indirect
7488
gopkg.in/yaml.v3 v3.0.1 // indirect
7589
k8s.io/api v0.32.0 // indirect
90+
k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9 // indirect
7691
k8s.io/klog/v2 v2.130.1 // indirect
7792
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
7893
k8s.io/utils v0.0.0-20241210054802-24370beab758 // indirect

0 commit comments

Comments
 (0)