1
1
.PHONY : vendor test manager clusterctl run install deploy manifests generate fmt vet run
2
2
3
+ GIT_VERSION? =$(shell git log -1 --format="% h")
4
+ RELEASE_TAG ?= $(shell git tag --points-at HEAD)
5
+
3
6
# BUILDARCH is the host architecture
4
7
# ARCH is the target architecture
5
8
# we need to keep track of them separately
@@ -30,7 +33,9 @@ OS ?= $(BUILDOS)
30
33
31
34
32
35
# Image URL to use all building/pushing image targets
33
- IMG ?= packethost/cluster-api-provider-packet:latest
36
+ BUILD_IMAGE ?= packethost/cluster-api-provider-packet
37
+ BUILD_IMAGE_TAG ?= $(BUILD_IMAGE ) :latest
38
+ PUSH_IMAGE_TAG ?= $(BUILD_IMAGE ) :$(IMAGETAG )
34
39
PROVIDERYAML ?= provider-components.yaml.template
35
40
CLUSTERCTL ?= bin/clusterctl-$(OS ) -$(ARCH )
36
41
MANAGER ?= bin/manager-$(OS ) -$(ARCH )
@@ -45,6 +50,25 @@ vendor:
45
50
$(GO ) mod vendor
46
51
./hack/update-vendor.sh
47
52
53
+ ci : fmt vet test image
54
+
55
+ imagetag :
56
+ ifndef IMAGETAG
57
+ $(error IMAGETAG is undefined - run using make <target> IMAGETAG=X.Y.Z)
58
+ endif
59
+
60
+ tag-image : imagetag
61
+ docker tag $(BUILD_IMAGE_TAG ) $(PUSH_IMAGE_TAG )
62
+
63
+ confirm :
64
+ ifndef CONFIRM
65
+ $(error CONFIRM is undefined - run using make <target> CONFIRM=true)
66
+ endif
67
+
68
+ cd : confirm
69
+ $(MAKE ) tag-image push IMAGETAG=$(GIT_VERSION )
70
+
71
+
48
72
# Run tests
49
73
test : vendor generate fmt vet manifests
50
74
$(GO ) test -mod=vendor ./pkg/... ./cmd/... -coverprofile cover.out
@@ -75,7 +99,18 @@ deploy: manifests $(CLUSTERCTL)
75
99
# Generate manifests e.g. CRD, RBAC etc.
76
100
manifests : $(PROVIDERYAML )
77
101
$(PROVIDERYAML ) :
102
+ # which image do we patch in? BUILD_IMAGE_TAG or PUSH_IMAGE_TAG? Depends on if it is set
103
+ ifdef IMAGETAG
104
+ $(eval PATCH_IMAGE_TAG := $(PUSH_IMAGE_TAG))
105
+ else
106
+ $(eval PATCH_IMAGE_TAG := $(BUILD_IMAGE_TAG))
107
+ endif
108
+ # generate
78
109
$(GO) run -mod=vendor vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go all
110
+ # patch the particular image tag we will want to deploy
111
+ @echo "updating kustomize image patch file for manager resource"
112
+ sed -i'' -e 's@PATCH_ME_IMAGE@image: '"$(PATCH_IMAGE_TAG)"'@' ./config/default/manager_image_patch.yaml
113
+ # create the manifests
79
114
$(KUBECTL) kustomize vendor/sigs.k8s.io/cluster-api/config/default/ > $(PROVIDERYAML)
80
115
echo "---" >> $(PROVIDERYAML)
81
116
$(KUBECTL) kustomize config/ >> $(PROVIDERYAML)
@@ -97,14 +132,13 @@ endif
97
132
$(GO) generate -mod=vendor ./pkg/... ./cmd/...
98
133
99
134
# Build the docker image
135
+ image : docker-build
100
136
docker-build : test
101
- docker build . -t ${IMG}
102
- @echo " updating kustomize image patch file for manager resource"
103
- sed -i' ' -e ' s@image: .*@image: ' " ${IMG} " ' @' ./config/default/manager_image_patch.yaml
137
+ docker build -t $(BUILD_IMAGE_TAG ) .
104
138
105
139
# Push the docker image
106
- docker- push :
107
- docker push ${IMG}
140
+ push :
141
+ docker push $( PUSH_IMAGE_TAG )
108
142
109
- image-name :
110
- @echo ${IMG}
143
+ image-tag :
144
+ @echo $( PUSH_IMAGE_TAG )
0 commit comments