Skip to content

Commit 1fcf907

Browse files
committed
update build logic
1 parent d4168de commit 1fcf907

File tree

5 files changed

+71
-65
lines changed

5 files changed

+71
-65
lines changed

.project

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

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
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

66
WORKDIR /workspace
7-
# Copy the Go Modules manifests
7+
# Copy the go module manifests
88
COPY go.mod go.mod
99
COPY go.sum go.sum
1010
# Cache deps before building and copying source so that we don't need to re-download as much

Makefile

+27-44
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.
22+
manifests: controller-gen ## Generate CustomResourceDefinition objects
2323
$(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.
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
2831
$(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} .
@@ -83,49 +86,29 @@ $(LOCALBIN):
8386

8487
## Tool Binaries
8588
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
86-
CLIENT_GEN ?= $(LOCALBIN)/client-gen
87-
INFORMER_GEN ?= $(LOCALBIN)/informer-gen
88-
LISTER_GEN ?= $(LOCALBIN)/lister-gen
8989
SETUP_ENVTEST ?= $(LOCALBIN)/setup-envtest
9090

91-
## Tool Versions
92-
CONTROLLER_TOOLS_VERSION ?= v0.16.1
93-
CODE_GENERATOR_VERSION ?= v0.29.8
94-
SETUP_ENVTEST_VERSION ?= latest
95-
9691
.PHONY: controller-gen
97-
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
92+
controller-gen: $(CONTROLLER_GEN) ## Install controller-gen
9893
$(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)
94+
go mod download sigs.k8s.io/controller-tools
95+
GOBIN=$(LOCALBIN) go install $$(go list -m -f '{{.Dir}}' sigs.k8s.io/controller-tools)/cmd/controller-gen
11596

11697
.PHONY: setup-envtest
117-
setup-envtest: $(SETUP_ENVTEST) ## Download setup-envtest locally if necessary.
98+
setup-envtest: $(SETUP_ENVTEST) ## Install setup-envtest
11899
$(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+
go mod download sigs.k8s.io/controller-runtime
101+
GOBIN=$(LOCALBIN) go install $$(go list -m -f '{{.Dir}}' sigs.k8s.io/controller-runtime/tools/setup-envtest)
120102

121103
.PHONY: envtest
122-
envtest: setup-envtest
104+
envtest: setup-envtest ## Install envtest binaries
123105
ENVTESTDIR=$$($(SETUP_ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path) ;\
124106
chmod -R u+w $$ENVTESTDIR ;\
125107
rm -f $(LOCALBIN)/k8s/current ;\
126108
ln -s $$ENVTESTDIR $(LOCALBIN)/k8s/current
127109

128110
##@ Manage Content
111+
129112
.PHONY: update-content
130113
update-content: ## Update external resources used by this repository.
131114
rm -rf pkg/operator/data/charts

hack/genclient.sh

+25-18
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,55 @@
22

33
set -eo pipefail
44

5-
export GOROOT=$(go env GOROOT)
5+
BASEDIR=$(realpath "$(dirname "$0")"/..)
6+
7+
export GOBIN=$BASEDIR/bin
8+
mkdir -p "$GOBIN"
9+
10+
go mod download k8s.io/code-generator
11+
CODEGEN_DIR=$(go list -m -f '{{.Dir}}' k8s.io/code-generator)
12+
go install "$CODEGEN_DIR"/cmd/*
613

7-
BASEDIR=$(realpath $(dirname "$0")/..)
814
TEMPDIR=$BASEDIR/tmp/gen
915
trap 'rm -rf "$TEMPDIR"' EXIT
1016
mkdir -p "$TEMPDIR"
1117

1218
mkdir -p "$TEMPDIR"/apis/operator.kyma-project.io
1319
ln -s "$BASEDIR"/api/v1alpha1 "$TEMPDIR"/apis/operator.kyma-project.io/v1alpha1
1420

15-
"$BASEDIR"/bin/client-gen \
21+
"$GOBIN"/client-gen \
1622
--clientset-name versioned \
17-
--input-base "" \
18-
--input github.com/sap/cf-service-operator-cop/tmp/gen/apis/operator.kyma-project.io/v1alpha1 \
23+
--input-base "$TEMPDIR"/apis \
24+
--input operator.kyma-project.io/v1alpha1 \
1925
--go-header-file "$BASEDIR"/hack/boilerplate.go.txt \
20-
--output-package github.com/sap/cf-service-operator-cop/pkg/client/clientset \
21-
--output-base "$TEMPDIR"/pkg/client \
26+
--output-pkg github.com/sap/cf-service-operator-cop/pkg/client/clientset \
27+
--output-dir "$TEMPDIR"/pkg/client/clientset \
2228
--plural-exceptions CFServiceOperator:cfserviceoperators
2329

24-
"$BASEDIR"/bin/lister-gen \
25-
--input-dirs github.com/sap/cf-service-operator-cop/tmp/gen/apis/operator.kyma-project.io/v1alpha1 \
30+
"$GOBIN"/lister-gen \
2631
--go-header-file "$BASEDIR"/hack/boilerplate.go.txt \
27-
--output-package github.com/sap/cf-service-operator-cop/pkg/client/listers \
28-
--output-base "$TEMPDIR"/pkg/client \
29-
--plural-exceptions CFServiceOperator:cfserviceoperators
32+
--output-pkg github.com/sap/cf-service-operator-cop/pkg/client/listers \
33+
--output-dir "$TEMPDIR"/pkg/client/listers \
34+
--plural-exceptions CFServiceOperator:cfserviceoperators \
35+
github.com/sap/cf-service-operator-cop/tmp/gen/apis/operator.kyma-project.io/v1alpha1
3036

31-
"$BASEDIR"/bin/informer-gen \
32-
--input-dirs github.com/sap/cf-service-operator-cop/tmp/gen/apis/operator.kyma-project.io/v1alpha1 \
37+
"$GOBIN"/informer-gen \
3338
--versioned-clientset-package github.com/sap/cf-service-operator-cop/pkg/client/clientset/versioned \
3439
--listers-package github.com/sap/cf-service-operator-cop/pkg/client/listers \
3540
--go-header-file "$BASEDIR"/hack/boilerplate.go.txt \
36-
--output-package github.com/sap/cf-service-operator-cop/pkg/client/informers \
37-
--output-base "$TEMPDIR"/pkg/client \
38-
--plural-exceptions CFServiceOperator:cfserviceoperators
41+
--output-pkg github.com/sap/cf-service-operator-cop/pkg/client/informers \
42+
--output-dir "$TEMPDIR"/pkg/client/informers \
43+
--plural-exceptions CFServiceOperator:cfserviceoperators \
44+
github.com/sap/cf-service-operator-cop/tmp/gen/apis/operator.kyma-project.io/v1alpha1
3945

4046
find "$TEMPDIR"/pkg/client -name "*.go" -exec \
4147
perl -pi -e "s#github\.com/sap/cf-service-operator-cop/tmp/gen/apis/operator\.kyma-project\.io/v1alpha1#github.com/sap/cf-service-operator-cop/api/v1alpha1#g" \
4248
{} +
4349

4450
rm -rf "$BASEDIR"/pkg/client
45-
mv "$TEMPDIR"/pkg/client/github.com/sap/cf-service-operator-cop/pkg/client "$BASEDIR"/pkg
51+
mv "$TEMPDIR"/pkg/client "$BASEDIR"/pkg
4652

4753
cd "$BASEDIR"
54+
go mod tidy
4855
go fmt ./pkg/client/...
4956
go vet ./pkg/client/...

hack/tools.go

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//go:build tools
2+
// +build tools
3+
4+
/*
5+
SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and cf-service-operator-cop contributors
6+
SPDX-License-Identifier: Apache-2.0
7+
*/
8+
9+
package tools
10+
11+
import (
12+
_ "k8s.io/code-generator"
13+
_ "sigs.k8s.io/controller-runtime/tools/setup-envtest"
14+
_ "sigs.k8s.io/controller-tools/cmd/controller-gen"
15+
)

0 commit comments

Comments
 (0)