@@ -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+
4047type ProjectScaffolder interface {
4148 EnsureDependencies () (bool , error )
4249 Scaffold () error
@@ -147,11 +154,26 @@ func (p *V2Project) Validate() error {
147154}
148155
149156func (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
157179func (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 {},
0 commit comments