Skip to content

Commit 855513f

Browse files
authored
Merge pull request #1011 from droot/running/bump-up-cr-ct
🏃 parameterize controller-runtime and tools version
2 parents 6236ac2 + e6e1b99 commit 855513f

File tree

12 files changed

+56
-18
lines changed

12 files changed

+56
-18
lines changed

pkg/scaffold/project.go

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ import (
3737
"sigs.k8s.io/kubebuilder/pkg/scaffold/v2/webhook"
3838
)
3939

40+
const (
41+
// controller runtime version to be used in the project
42+
controllerRuntimeVersion = "v0.2.2"
43+
// ControllerTools version to be used in the project
44+
controllerToolsVersion = "v0.2.1"
45+
)
46+
4047
type ProjectScaffolder interface {
4148
EnsureDependencies() (bool, error)
4249
Scaffold() error
@@ -147,11 +154,26 @@ func (p *V2Project) Validate() error {
147154
}
148155

149156
func (p *V2Project) EnsureDependencies() (bool, error) {
150-
c := exec.Command("go", "mod", "tidy") // #nosec
157+
// ensure that we are pinning controller-runtime version
158+
// xref: https://github.com/kubernetes-sigs/kubebuilder/issues/997
159+
c := exec.Command("go", "get", "sigs.k8s.io/controller-runtime@"+controllerRuntimeVersion) // #nosec
151160
c.Stderr = os.Stderr
152161
c.Stdout = os.Stdout
153162
fmt.Println(strings.Join(c.Args, " "))
154-
return true, c.Run()
163+
err := c.Run()
164+
if err != nil {
165+
return false, err
166+
}
167+
168+
c = exec.Command("go", "mod", "tidy") // #nosec
169+
c.Stderr = os.Stderr
170+
c.Stdout = os.Stdout
171+
fmt.Println(strings.Join(c.Args, " "))
172+
err = c.Run()
173+
if err != nil {
174+
return false, err
175+
}
176+
return true, err
155177
}
156178

157179
func (p *V2Project) buildUniverse() *model.Universe {
@@ -201,8 +223,8 @@ func (p *V2Project) Scaffold() error {
201223
&project.AuthProxyRoleBinding{},
202224
&managerv2.Config{Image: imgName},
203225
&scaffoldv2.Main{},
204-
&scaffoldv2.GoMod{},
205-
&scaffoldv2.Makefile{Image: imgName},
226+
&scaffoldv2.GoMod{ControllerRuntimeVersion: controllerRuntimeVersion},
227+
&scaffoldv2.Makefile{Image: imgName, ControllerToolsVersion: controllerToolsVersion},
206228
&scaffoldv2.Dockerfile{},
207229
&scaffoldv2.Kustomize{},
208230
&scaffoldv2.ManagerWebhookPatch{},

pkg/scaffold/v2/gomod.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ var _ input.File = &GoMod{}
2525
// GoMod writes a templatefile for go.mod
2626
type GoMod struct {
2727
input.Input
28+
ControllerRuntimeVersion string
2829
}
2930

3031
// GetInput implements input.File
@@ -43,6 +44,6 @@ module {{ .Repo }}
4344
go 1.12
4445
4546
require (
46-
sigs.k8s.io/controller-runtime v0.2.0
47+
sigs.k8s.io/controller-runtime {{ .ControllerRuntimeVersion }}
4748
)
4849
`

pkg/scaffold/v2/makefile.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ type Makefile struct {
2727
input.Input
2828
// Image is controller manager image name
2929
Image string
30+
// Controller tools version to use in the project
31+
ControllerToolsVersion string
3032
}
3133

3234
// GetInput implements input.File
@@ -106,7 +108,7 @@ docker-push:
106108
# download controller-gen if necessary
107109
controller-gen:
108110
ifeq (, $(shell which controller-gen))
109-
go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.0
111+
go get sigs.k8s.io/controller-tools/cmd/controller-gen@{{.ControllerToolsVersion}}
110112
CONTROLLER_GEN=$(GOBIN)/controller-gen
111113
else
112114
CONTROLLER_GEN=$(shell which controller-gen)

testdata/project-v2/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager
1919

2020
# Use distroless as minimal base image to package the manager binary
2121
# Refer to https://github.com/GoogleContainerTools/distroless for more details
22-
FROM gcr.io/distroless/static:latest
22+
FROM gcr.io/distroless/static:nonroot
2323
WORKDIR /
2424
COPY --from=builder /workspace/manager .
25+
USER nonroot:nonroot
26+
2527
ENTRYPOINT ["/manager"]

testdata/project-v2/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ docker-push:
6262
# download controller-gen if necessary
6363
controller-gen:
6464
ifeq (, $(shell which controller-gen))
65-
go get sigs.k8s.io/controller-tools/cmd/[email protected].0
65+
go get sigs.k8s.io/controller-tools/cmd/[email protected].1
6666
CONTROLLER_GEN=$(GOBIN)/controller-gen
6767
else
6868
CONTROLLER_GEN=$(shell which controller-gen)

testdata/project-v2/api/v1/zz_generated.deepcopy.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

testdata/project-v2/config/crd/bases/crew.testproject.org_admirals.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ spec:
99
group: crew.testproject.org
1010
names:
1111
kind: Admiral
12+
listKind: AdmiralList
1213
plural: admirals
14+
singular: admiral
1315
scope: Cluster
1416
validation:
1517
openAPIV3Schema:
@@ -34,6 +36,7 @@ spec:
3436
description: AdmiralStatus defines the observed state of Admiral
3537
type: object
3638
type: object
39+
version: v1
3740
versions:
3841
- name: v1
3942
served: true

testdata/project-v2/config/crd/bases/crew.testproject.org_captains.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ spec:
99
group: crew.testproject.org
1010
names:
1111
kind: Captain
12+
listKind: CaptainList
1213
plural: captains
14+
singular: captain
1315
scope: ""
1416
validation:
1517
openAPIV3Schema:
@@ -34,6 +36,7 @@ spec:
3436
description: CaptainStatus defines the observed state of Captain
3537
type: object
3638
type: object
39+
version: v1
3740
versions:
3841
- name: v1
3942
served: true

testdata/project-v2/config/crd/bases/crew.testproject.org_firstmates.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ spec:
99
group: crew.testproject.org
1010
names:
1111
kind: FirstMate
12+
listKind: FirstMateList
1213
plural: firstmates
14+
singular: firstmate
1315
scope: ""
1416
validation:
1517
openAPIV3Schema:
@@ -34,6 +36,7 @@ spec:
3436
description: FirstMateStatus defines the observed state of FirstMate
3537
type: object
3638
type: object
39+
version: v1
3740
versions:
3841
- name: v1
3942
served: true

testdata/project-v2/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ require (
99
k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b
1010
k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d
1111
k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible
12-
sigs.k8s.io/controller-runtime v0.2.0
12+
sigs.k8s.io/controller-runtime v0.2.2
1313
)

0 commit comments

Comments
 (0)