From 4f9a7a908e80b253307bc4bd6b742b0ae5aa5a3d Mon Sep 17 00:00:00 2001 From: Jakub Date: Mon, 2 Jul 2018 18:27:59 +0200 Subject: [PATCH] Make sure all new docker images are also tagged with commit (#1062) This change also defines new makefile targets which prevent from pushing `latest` image tags by accident. --- Makefile | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 1b8e7320e..82634901e 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,9 @@ endif CGO_CFLAGS=-I/$(JAVA_HOME)/include -I/$(JAVA_HOME)/include/darwin GOBIN=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))build/bin GIT_COMMIT := $(shell git rev-parse --short HEAD) +GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD) +GIT_LOCAL := $(shell git rev-parse @) +GIT_REMOTE := $(shell git fetch -q && git rev-parse origin) BUILD_FLAGS ?= $(shell echo "-ldflags '-X main.buildStamp=`date -u '+%Y-%m-%d.%H:%M:%S'` -X github.com/status-im/status-go/params.VersionMeta=$(GIT_COMMIT)'") @@ -43,6 +46,8 @@ DOCKER_IMAGE_NAME ?= statusteam/status-go BOOTNODE_IMAGE_NAME ?= statusteam/bootnode STATUSD_PRUNE_IMAGE_NAME ?= statusteam/statusd-prune +DOCKER_IMAGE_CUSTOM_TAG ?= $(shell BUILD_TAGS="$(BUILD_TAGS)" ./_assets/ci/get-docker-image-tag.sh) + DOCKER_TEST_WORKDIR = /go/src/github.com/status-im/status-go/ DOCKER_TEST_IMAGE = golang:1.10 @@ -129,15 +134,33 @@ statusgo-library: ##@cross-compile Build status-go as static library for current docker-image: ##@docker Build docker image (use DOCKER_IMAGE_NAME to set the image name) @echo "Building docker image..." - docker build --file _assets/build/Dockerfile --build-arg "build_tags=$(BUILD_TAGS)" --build-arg "build_flags=$(BUILD_FLAGS)" . -t $(DOCKER_IMAGE_NAME):latest + docker build --file _assets/build/Dockerfile . \ + --build-arg "build_tags=$(BUILD_TAGS)" \ + --build-arg "build_flags=$(BUILD_FLAGS)" \ + -t $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG) \ + -t $(DOCKER_IMAGE_NAME):latest bootnode-image: @echo "Building docker image for bootnode..." - docker build --file _assets/build/Dockerfile-bootnode . -t $(BOOTNODE_IMAGE_NAME):latest + docker build --file _assets/build/Dockerfile-bootnode . \ + -t $(BOOTNODE_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG) \ + -t $(BOOTNODE_IMAGE_NAME):latest -docker-image-tag: ##@docker Tag DOCKER_IMAGE_NAME:latest with a tag following pattern $GIT_SHA[:8]-$BUILD_TAGS - @echo "Tagging docker image..." - docker tag $(DOCKER_IMAGE_NAME):latest $(DOCKER_IMAGE_NAME):$(shell BUILD_TAGS="$(BUILD_TAGS)" ./_assets/ci/get-docker-image-tag.sh) +push-docker-images: docker-image bootnode-image + docker push $(BOOTNODE_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG) + docker push $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG) + +push-docker-images-latest: docker-image bootnode-image +ifneq ("$(GIT_BRANCH)", "develop") + echo "You should only use develop branch to push the latest tag!" + exit 1 +endif +ifneq ("$(GIT_LOCAL)", "$(GIT_REMOTE)") + echo "The local git commit does not match the remote origin!" + exit 1 +endif + docker push $(BOOTNODE_IMAGE_NAME):latest + docker push $(DOCKER_IMAGE_NAME):latest xgo-docker-images: ##@docker Build xgo docker images @echo "Building xgo docker images..."