@@ -28,6 +28,7 @@ import (
28
28
29
29
"github.com/operator-framework/operator-sdk/internal/plugins/manifests/v2/templates/config/manifests"
30
30
"github.com/operator-framework/operator-sdk/internal/util/projutil"
31
+ "github.com/operator-framework/operator-sdk/internal/version"
31
32
)
32
33
33
34
// Version of `opm` to download and use for building index images.
@@ -68,7 +69,15 @@ func (s *initSubcommand) Scaffold(fs machinery.Filesystem) error {
68
69
}
69
70
projectName = strings .ToLower (filepath .Base (dir ))
70
71
}
71
- makefileBytes = append ([]byte (fmt .Sprintf (makefileBundleVarFragment , s .config .GetDomain (), projectName )), makefileBytes ... )
72
+ makefileBytes = append ([]byte (fmt .Sprintf (makefileBundleVarFragment , s .config .GetDomain (), projectName , strings .Trim (version .Version , "+git" ))), makefileBytes ... )
73
+
74
+ // Append SDK recipes.
75
+ switch operatorType {
76
+ case projutil .OperatorTypeGo :
77
+ makefileBytes = append (makefileBytes , []byte (makefileSDKFragmentGo )... )
78
+ default :
79
+ makefileBytes = append (makefileBytes , []byte (makefileSDKFragmentNonGo )... )
80
+ }
72
81
73
82
// Append bundle recipes.
74
83
switch operatorType {
@@ -168,24 +177,65 @@ USE_IMAGE_DIGESTS ?= false
168
177
ifeq ($(USE_IMAGE_DIGESTS), true)
169
178
BUNDLE_GEN_FLAGS += --use-image-digests
170
179
endif
180
+
181
+ # Set the Operator SDK version to use. By default, what is installed on the system is used.
182
+ # This is useful for CI or a project to utilize a specific version of the operator-sdk toolkit.
183
+ OPERATOR_SDK_VERSION ?= %[3]s
184
+ `
185
+
186
+ makefileSDKFragmentGo = `
187
+ .PHONY: operator-sdk
188
+ OPERATOR_SDK ?= $(LOCALBIN)/operator-sdk
189
+ operator-sdk: ## Download operator-sdk locally if necessary.
190
+ ifeq (,$(wildcard $(OPERATOR_SDK)))
191
+ ifeq (, $(shell which operator-sdk 2>/dev/null))
192
+ @{ \
193
+ set -e ;\
194
+ mkdir -p $(dir $(OPERATOR_SDK)) ;\
195
+ OS=$(shell go env GOOS) && ARCH=$(shell go env GOARCH) && \
196
+ curl -sSLo $(OPERATOR_SDK) https://github.com/operator-framework/operator-sdk/releases/download/$(OPERATOR_SDK_VERSION)/operator-sdk_$${OS}_$${ARCH} ;\
197
+ chmod +x $(OPERATOR_SDK) ;\
198
+ }
199
+ else
200
+ OPERATOR_SDK = $(shell which operator-sdk)
201
+ endif
202
+ endif
203
+ `
204
+
205
+ makefileSDKFragmentNonGo = `
206
+ .PHONY: operator-sdk
207
+ OPERATOR_SDK ?= ./bin/operator-sdk
208
+ operator-sdk: ## Download operator-sdk locally if necessary.
209
+ ifeq (,$(wildcard $(OPERATOR_SDK)))
210
+ ifeq (, $(shell which operator-sdk 2>/dev/null))
211
+ @{ \
212
+ set -e ;\
213
+ mkdir -p $(dir $(OPERATOR_SDK)) ;\
214
+ curl -sSLo $(OPERATOR_SDK) https://github.com/operator-framework/operator-sdk/releases/download/$(OPERATOR_SDK_VERSION)/operator-sdk_$(OS)_$(ARCH) ;\
215
+ chmod +x $(OPERATOR_SDK) ;\
216
+ }
217
+ else
218
+ OPERATOR_SDK = $(shell which operator-sdk)
219
+ endif
220
+ endif
171
221
`
172
222
173
223
makefileBundleFragmentGo = `
174
224
.PHONY: bundle
175
- bundle: manifests kustomize ## Generate bundle manifests and metadata, then validate generated files.
176
- operator-sdk generate kustomize manifests -q
225
+ bundle: manifests kustomize operator-sdk ## Generate bundle manifests and metadata, then validate generated files.
226
+ $(OPERATOR_SDK) generate kustomize manifests -q
177
227
cd config/manager && $(KUSTOMIZE) edit set image controller=$(IMG)
178
- $(KUSTOMIZE) build config/manifests | operator-sdk generate bundle $(BUNDLE_GEN_FLAGS)
179
- operator-sdk bundle validate ./bundle
228
+ $(KUSTOMIZE) build config/manifests | $(OPERATOR_SDK) generate bundle $(BUNDLE_GEN_FLAGS)
229
+ $(OPERATOR_SDK) bundle validate ./bundle
180
230
`
181
231
182
232
makefileBundleFragmentNonGo = `
183
233
.PHONY: bundle
184
- bundle: kustomize ## Generate bundle manifests and metadata, then validate generated files.
185
- operator-sdk generate kustomize manifests -q
234
+ bundle: kustomize operator-sdk ## Generate bundle manifests and metadata, then validate generated files.
235
+ $(OPERATOR_SDK) generate kustomize manifests -q
186
236
cd config/manager && $(KUSTOMIZE) edit set image controller=$(IMG)
187
- $(KUSTOMIZE) build config/manifests | operator-sdk generate bundle $(BUNDLE_GEN_FLAGS)
188
- operator-sdk bundle validate ./bundle
237
+ $(KUSTOMIZE) build config/manifests | $(OPERATOR_SDK) generate bundle $(BUNDLE_GEN_FLAGS)
238
+ $(OPERATOR_SDK) bundle validate ./bundle
189
239
`
190
240
191
241
makefileBundleBuildPushFragment = `
0 commit comments