@@ -39,13 +39,17 @@ GIT_TREE_STATE = $(if $(shell test -d .git || echo missing),archive,$(if $(shell
39
39
# Example: BUILD_TAGS="minimal provider_kubernetes"
40
40
BUILD_TAGS ?=
41
41
42
+ # Build number passed in must be a monotonic int representing
43
+ # the build.
44
+ JUJU_BUILD_NUMBER ?=
45
+
42
46
# Compile with debug flags if requested.
43
47
ifeq ($(DEBUG_JUJU ) , 1)
44
48
COMPILE_FLAGS = -gcflags "all=-N -l"
45
- LINK_FLAGS = -ldflags "-X $(PROJECT ) /version.GitCommit=$(GIT_COMMIT ) -X $(PROJECT ) /version.GitTreeState=$(GIT_TREE_STATE ) "
49
+ LINK_FLAGS = -ldflags "-X $(PROJECT ) /version.GitCommit=$(GIT_COMMIT ) -X $(PROJECT ) /version.GitTreeState=$(GIT_TREE_STATE ) -X $( PROJECT ) /version.build= $( JUJU_BUILD_NUMBER ) "
46
50
else
47
51
COMPILE_FLAGS =
48
- LINK_FLAGS = -ldflags "-s -w -X $(PROJECT ) /version.GitCommit=$(GIT_COMMIT ) -X $(PROJECT ) /version.GitTreeState=$(GIT_TREE_STATE ) "
52
+ LINK_FLAGS = -ldflags "-s -w -X $(PROJECT ) /version.GitCommit=$(GIT_COMMIT ) -X $(PROJECT ) /version.GitTreeState=$(GIT_TREE_STATE ) -X $( PROJECT ) /version.build= $( JUJU_BUILD_NUMBER ) "
49
53
endif
50
54
51
55
define DEPENDENCIES
@@ -184,29 +188,41 @@ check-deps:
184
188
@echo " $( GOCHECK_COUNT) instances of gocheck not in test code"
185
189
186
190
# CAAS related targets
187
- DOCKER_USERNAME ?= jujusolutions
188
- JUJUD_STAGING_DIR ?= /tmp/jujud-operator
189
- JUJUD_BIN_DIR ?= ${GOPATH}/bin
190
- OPERATOR_IMAGE_BUILD_SRC ?= true
191
- OPERATOR_IMAGE_TAG ?= $(shell jujud version | rev | cut -d- -f3- | rev)
192
- OPERATOR_IMAGE_PATH = ${DOCKER_USERNAME}/jujud-operator:${OPERATOR_IMAGE_TAG}
193
-
194
- operator-image :
195
- ifeq ($(OPERATOR_IMAGE_BUILD_SRC),true)
196
- make install
197
- else
198
- @echo "skipping to build jujud bin, use existing one at ${JUJUD_BIN_DIR}/jujud."
199
- endif
191
+ DOCKER_USERNAME ?= jujusolutions
192
+ JUJUD_STAGING_DIR ?= /tmp/jujud-operator
193
+ JUJUD_BIN_DIR ?= ${GOPATH}/bin
194
+ OPERATOR_IMAGE_BUILD_SRC ?= true
195
+ # By default the image tag is the full version number, including the build number.
196
+ OPERATOR_IMAGE_TAG ?= $(shell jujud version | grep -E -o "^[[:digit:]]{1,9}\.[[:digit:]]{1,9}(\.|-[[:alpha:]]+) [[:digit:]]{1,9}(\.[[:digit:]]{1,9})?")
197
+ # Legacy tags never have a build number.
198
+ OPERATOR_IMAGE_TAG_LEGACY ?= $(shell jujud version | grep -E -o "^[[:digit:]]{1,9}\.[[:digit:]]{1,9}(\.|-[[:alpha:]]+) [[:digit:]]{1,9}")
199
+ OPERATOR_IMAGE_PATH = ${DOCKER_USERNAME}/jujud-operator:${OPERATOR_IMAGE_TAG}
200
+ OPERATOR_IMAGE_PATH_LEGACY = ${DOCKER_USERNAME}/jujud-operator:${OPERATOR_IMAGE_TAG_LEGACY}
201
+
202
+ operator-check-build :
203
+ ifeq ($(OPERATOR_IMAGE_BUILD_SRC ) ,true)
204
+ make install
205
+ else
206
+ @echo "skipping to build jujud bin, use existing one at ${JUJUD_BIN_DIR}/jujud."
207
+ endif
208
+
209
+ operator-image : operator-check-build
200
210
rm -rf ${JUJUD_STAGING_DIR}
201
211
mkdir ${JUJUD_STAGING_DIR}
202
212
cp ${JUJUD_BIN_DIR} /jujud ${JUJUD_STAGING_DIR}
203
213
cp caas/jujud-operator-dockerfile ${JUJUD_STAGING_DIR}
204
214
cp caas/jujud-operator-requirements.txt ${JUJUD_STAGING_DIR}
205
215
docker build -f ${JUJUD_STAGING_DIR} /jujud-operator-dockerfile -t ${OPERATOR_IMAGE_PATH} ${JUJUD_STAGING_DIR}
216
+ ifneq ($(OPERATOR_IMAGE_PATH ) ,$(OPERATOR_IMAGE_PATH_LEGACY ) )
217
+ docker tag ${OPERATOR_IMAGE_PATH} ${OPERATOR_IMAGE_PATH_LEGACY}
218
+ endif
206
219
rm -rf ${JUJUD_STAGING_DIR}
207
220
208
221
push-operator-image : operator-image
209
222
docker push ${OPERATOR_IMAGE_PATH}
223
+ ifneq ($(OPERATOR_IMAGE_PATH ) ,$(OPERATOR_IMAGE_PATH_LEGACY ) )
224
+ docker push ${OPERATOR_IMAGE_PATH_LEGACY}
225
+ endif
210
226
211
227
microk8s-operator-update : operator-image
212
228
docker save ${OPERATOR_IMAGE_PATH} | microk8s.ctr --namespace k8s.io image import -
0 commit comments