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 ) run
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=" ./..." output:crd:artifacts:config=config/crd/bases
242+ $(CONTROLLER_GEN ) $(CRD_OPTIONS ) rbac:roleName=manager-role webhook paths=" ./..." output:crd:artifacts:config=config/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 ) : semver $(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 ) : semver $(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 ) : semver $(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 ) : semver $(MANAGERLESS_DIR )
353+ cp $(METADATA_YAML ) $@
340354
341355managerless-cluster-template : semver $(MANAGERLESS_CLUSTER_TEMPLATE )
342356$(MANAGERLESS_CLUSTER_TEMPLATE ) : $(MANAGERLESS_DIR )
0 commit comments