22
33GIT_VERSION  ?= $(shell  git log -1 --format="% h") 
44RELEASE_TAG  := $(shell  git describe --abbrev=0 --tags ${TAG_COMMIT} 2>/dev/null || true) 
5+ RELEASE_VERSION  ?= $(shell  cat VERSION) 
6+ IS_NEW_RELEASE  ?= true
57
8+ #  are there uncommitted files?
69ifneq  ($(shell  git status --porcelain) ,)
710	#  next is used by GoReleaser as well when --spanshot is set
811  RELEASE_TAG  := $(RELEASE_TAG ) -next
12+   RELEASE_VERSION  := $(RELEASE_VERSION ) -dirty
13+   IS_NEW_RELEASE  := false
914endif 
1015
16+ #  do we consider this to be a valid new release? Or are we working going forward?
17+ ifneq  ($(shell  git branch --show-current) ,master)
18+   RELEASE_VERSION  := $(RELEASE_VERSION ) -next
19+   IS_NEW_RELEASE  := false
20+ else 
21+   ifeq ($(shell git diff HEAD~1 VERSION),)
22+     RELEASE_VERSION  := $(RELEASE_VERSION ) -next
23+     IS_NEW_RELEASE  := false
24+   endif
25+ endif 
26+ 
27+ VERSION  ?= $(RELEASE_VERSION ) 
28+ 
1129#  which arches can we support
1230ARCHES =arm64 amd64
1331
@@ -37,7 +55,8 @@ E2E_FOCUS := "functional tests"
3755TOOLS_DIR  := hack/tools
3856TOOLS_BIN_DIR  := $(TOOLS_DIR ) /bin
3957BIN_DIR  := bin
40- TEST_E2E_DIR  := test/e2e
58+ TEST_DIR  := test
59+ TEST_E2E_DIR  := $(TEST_DIR ) /e2e
4160
4261#  Binaries.
4362KUSTOMIZE  := $(TOOLS_BIN_DIR ) /kustomize
@@ -112,16 +131,10 @@ CORE_VERSION ?= v0.3.5
112131CORE_API  ?= https://api.github.com/repos/kubernetes-sigs/cluster-api/releases
113132CORE_URL  ?= https://github.com/kubernetes-sigs/cluster-api/releases/download/$(CORE_VERSION ) 
114133
115- #  useful function
116- word-dot  = $(word  $2,$(subst  ., ,$1) ) 
117- 
118- VERSION  ?= $(RELEASE_TAG ) 
119- VERSION_CONTRACT  ?= v1alpha3
120- VERSION_MAJOR  ?= $(call  word-dot,$(VERSION ) ,1) 
121- VERSION_MINOR  ?= $(call  word-dot,$(VERSION ) ,2) 
134+ #  metadata file to be included in releases
135+ METADATA_YAML  ?= metadata.yaml
122136
123137#  actual releases
124- RELEASE_VERSION  ?= $(VERSION ) 
125138RELEASE_BASE  := out/release/infrastructure-packet
126139RELEASE_DIR  := $(RELEASE_BASE ) /$(RELEASE_VERSION ) 
127140FULL_RELEASE_DIR  := $(realpath  .) /$(RELEASE_DIR ) 
@@ -145,7 +158,6 @@ FULL_MANAGERLESS_MANIFEST := $(FULL_MANAGERLESS_DIR)/infrastructure-components.y
145158MANAGERLESS_CLUSTERCTLYAML  := $(MANAGERLESS_BASE ) /clusterctl-$(MANAGERLESS_VERSION ) .yaml
146159
147160#  templates
148- METADATA_TEMPLATE  ?= templates/metadata-template.yaml
149161CLUSTERCTL_TEMPLATE  ?= templates/clusterctl-template.yaml
150162CLUSTER_TEMPLATE  ?= templates/cluster-template.yaml
151163
@@ -197,10 +209,11 @@ test: generate fmt vet crds
197209	go test  ./... -coverprofile cover.out
198210
199211#  Run e2e tests
212+ .PHONY : e2e
200213e2e :
201214	#  This is the name used inside the component.yaml for the container that runs the manager
202215	#  The image gets loaded inside kind from ./test/e2e/config/packet-dev.yaml
203- 	$(E2E_FLAGS )  $(MAKE )  -C test/e2e  run
216+ 	$(E2E_FLAGS )  $(MAKE )  -C $( TEST_E2E_DIR ) 
204217
205218#  Build manager binary
206219manager : $(MANAGER ) 
@@ -222,11 +235,11 @@ uninstall: crds
222235#  Deploy controller in the configured Kubernetes cluster in ~/.kube/config
223236deploy : crds
224237	cd  config/manager &&  $(KUSTOMIZE )  edit set  image controller=${IMG} 
225- 	$(KUSTOMIZE )  build config/default  |  kubectl apply -f -
238+ 	$(KUSTOMIZE )  build config/release  |  kubectl apply -f -
226239
227240#  Generate manifests e.g. CRD, RBAC etc.
228241crds : controller-gen
229- 	$(CONTROLLER_GEN )  $(CRD_OPTIONS )  rbac:roleName=manager-role webhook paths=" ./..." 
242+ 	$(CONTROLLER_GEN )  $(CRD_OPTIONS )  rbac:roleName=manager-role webhook paths=" ./..." resources/ crd/bases
230243
231244#  Run go fmt against code
232245fmt :
@@ -297,26 +310,27 @@ $(MANAGERLESS_DIR) $(MANAGERLESS_BASE):
297310
298311.PHONY : semver release-clusterctl release-manifests release $(RELEASE_CLUSTERCTLYAML )  $(RELEASE_MANIFEST )  $(RELEASE_METADATA )  $(RELEASE_CLUSTER_TEMPLATE )  $(FULL_RELEASE_CLUSTERCTLYAML ) 
299312
313+ check-release :
314+ 	@echo $(IS_NEW_RELEASE ) 
315+ 
300316semver :
301317ifeq  (,$(VERSION ) )
302- 	$(error could not determine version to use from git tag , will not create artifacts)
318+ 	$(error could not determine version to use from file , will not create artifacts)
303319endif 
320+ 	@echo "release version $(VERSION)"
304321
305322
306323manifest : kustomize semver release-manifests release-clusterctl release-cluster-template
307324
308- release :
309- 	goreleaser release --rm-dist --snapshot --skip-publish --debug
310- 
311- release/publish :
312- 	goreleaser release --rm-dist
313- 
314325release-manifests : semver $(RELEASE_MANIFEST )  $(RELEASE_METADATA )  $(RELEASE_CLUSTER_TEMPLATE ) 
315- $(RELEASE_MANIFEST ) $(RELEASE_DIR )  # # Builds the manifests to publish with a release
316- 	$(KUSTOMIZE )  build config/default >  $@ 
326+ release-version :
327+ 	KUSTOMIZE_ENABLE_ALPHA_COMMANDS=true $(KUSTOMIZE )  config set  config/release image-tag $(VERSION ) 
328+ 
329+ $(RELEASE_MANIFEST ) $(RELEASE_DIR )  release-version # # Builds the manifests to publish with a release
330+ 	$(KUSTOMIZE )  build config/release >  $@ 
317331
318- $(RELEASE_METADATA ) $(RELEASE_DIR )   $( METADATA_TEMPLATE ) 
319- 	cat  $(METADATA_TEMPLATE )    |  sed  ' s/MAJOR/$(VERSION_MAJOR)/g '   |  sed  ' s/MINOR/$(VERSION_MINOR)/g '   |  sed  ' s/CONTRACT/$(VERSION_CONTRACT)/g '   >  $@ 
332+ $(RELEASE_METADATA ) $(RELEASE_DIR ) 
333+ 	cp  $(METADATA_YAML )   $@ 
320334
321335release-cluster-template : semver $(RELEASE_CLUSTER_TEMPLATE ) 
322336$(RELEASE_CLUSTER_TEMPLATE ) $(RELEASE_DIR ) 
@@ -335,8 +349,8 @@ managerless-manifests: semver $(MANAGERLESS_MANIFEST) $(MANAGERLESS_METADATA)
335349$(MANAGERLESS_MANIFEST ) $(MANAGERLESS_DIR ) 
336350	$(KUSTOMIZE )  build config/managerless >  $@ 
337351
338- $(MANAGERLESS_METADATA ) $(MANAGERLESS_DIR )   $( METADATA_TEMPLATE ) 
339- 	cat  $(METADATA_TEMPLATE )    |  sed  ' s/MAJOR/$(VERSION_MAJOR)/g '   |  sed  ' s/MINOR/$(VERSION_MINOR)/g '   |  sed  ' s/CONTRACT/$(VERSION_CONTRACT)/g '   >  $@ 
352+ $(MANAGERLESS_METADATA ) $(MANAGERLESS_DIR ) 
353+ 	cp  $(METADATA_YAML )   $@ 
340354
341355managerless-cluster-template : semver $(MANAGERLESS_CLUSTER_TEMPLATE ) 
342356$(MANAGERLESS_CLUSTER_TEMPLATE ) $(MANAGERLESS_DIR ) 
0 commit comments