From 86607d9c75e98a07ab6da86c300cfeecfcffeec1 Mon Sep 17 00:00:00 2001
From: Benjamin Bollen <ben@monax.io>
Date: Mon, 28 Nov 2016 16:55:46 +0100
Subject: [PATCH] make, tests: add build docker commands; update location for
 build targets

---
 Dockerfile.deploy   |  9 ++----
 Makefile            | 74 +++++++++++++++++++++++++++++++++++----------
 tests/build_tool.sh |  9 +++---
 3 files changed, 65 insertions(+), 27 deletions(-)

diff --git a/Dockerfile.deploy b/Dockerfile.deploy
index c264cef4..dfe3b3e8 100644
--- a/Dockerfile.deploy
+++ b/Dockerfile.deploy
@@ -3,13 +3,8 @@ MAINTAINER Monax <support@monax.io>
 
 ENV TARGET eris-db
 
-# runtime customization start here
-COPY ./eris-client $INSTALL_BASE/eris-client
-COPY ./bin/start_eris_db $INSTALL_BASE/erisdb-wrapper
-# runtime customization end here
-
-# Get the binary from the artifact in pwd
-COPY ./"$TARGET"_build_artifact $INSTALL_BASE/$TARGET
+# Get the binary from the artefact in pwd/target/docker
+COPY ./target/docker/"$TARGET".dockerartefact $INSTALL_BASE/$TARGET
 RUN chmod +x --recursive $INSTALL_BASE
 
 # Finalize
diff --git a/Makefile b/Makefile
index a5584a1a..612f7f79 100644
--- a/Makefile
+++ b/Makefile
@@ -1,17 +1,25 @@
-# TARGET = eris-db
-# IMAGE = quay.io/eris/db
+# ----------------------------------------------------------
+# REQUIREMENTS
+
+# - go installed locally
+# - for build_docker: docker installed locally
+
+# ----------------------------------------------------------
 
 SHELL := /bin/bash
-GOFILES_NOVENDOR := $(shell find . -type f -name '*.go' -not -path "./vendor/*")
+REPO := $(shell pwd)
+GOFILES_NOVENDOR := $(shell find ${REPO} -type f -name '*.go' -not -path "${REPO}/vendor/*")
 PACKAGES_NOVENDOR := $(shell go list github.com/eris-ltd/eris-db/... | grep -v /vendor/)
-VERSION_MIN := $(shell cat ./version/version.go | tail -n 1 | cut -d \  -f 4 | tr -d '"')
-VERSION_MAJ := $(shell echo ${VERSION_MIN} | cut -d . -f 1-2)
+VERSION := $(shell cat ${REPO}/version/version.go | tail -n 1 | cut -d \  -f 4 | tr -d '"')
+VERSION_MIN := $(shell echo ${VERSION} | cut -d . -f 1-2)
 COMMIT_SHA := $(shell echo `git rev-parse --short --verify HEAD`)
-BUILD_DIR?=target
+
+DOCKER_NAMESPACE := quay.io/eris
+
 
 .PHONY: greet
 greet:
-	@echo "Hi! I'm the marmot that will help you with eris-db v${VERSION_MIN}"
+	@echo "Hi! I'm the marmot that will help you with eris-db v${VERSION}"
 
 ### Formatting, linting and vetting
 
@@ -46,12 +54,12 @@ vet:
 	@echo "Running go vet."
 	@go vet ${PACKAGES_NOVENDOR}
 
-### Dependency amanagement for github.com/eris-ltd/eris-db
+### Dependency management for github.com/eris-ltd/eris-db
 
 # erase vendor wipes the full vendor directory
 .PHONY: erase_vendor
 erase_vendor:
-	rm -rf vendor/
+	rm -rf ${REPO}/vendor/
 
 # install vendor uses glide to install vendored dependencies
 .PHONY: install_vendor
@@ -63,21 +71,21 @@ install_vendor:
 
 # build all targets in github.com/eris-ltd/eris-db
 .PHONY: build
-build:	build_db build_client build_keys
+build:	check build_db build_client build_keys
 
 # build all targets in github.com/eris-ltd/eris-db with checks for race conditions
 .PHONY: build_race
-build_race:	build_race_db build_race_client build_race_keys
+build_race:	check build_race_db build_race_client build_race_keys
 
 # build eris-db
 .PHONY: build_db
 build_db:
-	go build -o ${BUILD_DIR}/eris-db-${COMMIT_SHA} ./cmd/eris-db
+	go build -o ${REPO}/target/eris-db-${COMMIT_SHA} ./cmd/eris-db
 
 # build eris-client
 .PHONY: build_client
 build_client:
-	go build -o ${BUILD_DIR}/eris-client-${COMMIT_SHA} ./client/cmd/eris-client
+	go build -o ${REPO}/target/eris-client-${COMMIT_SHA} ./client/cmd/eris-client
 
 # build eris-keys
 .PHONY: build_keys
@@ -87,14 +95,48 @@ build_keys:
 # build eris-db with checks for race conditions
 .PHONY: build_race_db
 build_race_db:
-	go build -race -o ${BUILD_DIR}/eris-db-${COMMIT_SHA} ./cmd/eris-db
+	go build -race -o ${REPO}/target/eris-db-${COMMIT_SHA} ./cmd/eris-db
 
 # build eris-client with checks for race conditions
 .PHONY: build_race_client
 build_race_client:
-	go build -race -o ${BUILD_DIR}/eris-client-${COMMIT_SHA} ./client/cmd/eris-client
+	go build -race -o ${REPO}/target/eris-client-${COMMIT_SHA} ./client/cmd/eris-client
 
 # build eris-keys with checks for race conditions
 .PHONY: build_race_keys
 build_race_keys:
-	@echo "Marmots need to complete moving repository eris-keys into eris-db."
\ No newline at end of file
+	@echo "Marmots need to complete moving repository eris-keys into eris-db."
+
+### Testing github.com/eris-ltd/eris-db
+
+# test eris-db
+.PHONY: test
+test: build
+	@go test ${PACKAGES_NOVENDOR}
+
+# test eris-db with checks for race conditions
+.PHONY: test_race
+test_race: build_race
+	@go test -race ${PACKAGES_NOVENDOR}
+
+### Build docker images for github.com/eris-ltd/eris-db
+
+# build docker image for eris-db
+.PHONY: build_docker_db
+build_docker_db: check
+	@mkdir -p ${REPO}/target/docker
+	docker build -t ${DOCKER_NAMESPACE}/db:build-${COMMIT_SHA} ${REPO}
+	docker run --rm --entrypoint cat ${DOCKER_NAMESPACE}/db:build-${COMMIT_SHA} /usr/local/bin/eris-db > ${REPO}/target/docker/eris-db.dockerartefact
+	docker run --rm --entrypoint cat ${DOCKER_NAMESPACE}/db:build-${COMMIT_SHA} /usr/local/bin/eris-client > ${REPO}/target/docker/eris-client.dockerartefact
+	docker build -t ${DOCKER_NAMESPACE}/db:${VERSION} -f Dockerfile.deploy ${REPO}
+
+	@rm ${REPO}/target/docker/eris-db.dockerartefact
+	@rm ${REPO}/target/docker/eris-client.dockerartefact
+	docker rmi ${DOCKER_NAMESPACE}/db:build-${COMMIT_SHA}
+
+### Test docker images for github.com/eris-ltd/eris-db
+
+# test docker image for eris-db
+.PHONY: test_docker_db
+test_docker_db: check
+	docker build -t ${DOCKER_NAMESPACE}/db:build-${COMMIT_SHA} ${REPO}
diff --git a/tests/build_tool.sh b/tests/build_tool.sh
index b32f941b..1f377e91 100755
--- a/tests/build_tool.sh
+++ b/tests/build_tool.sh
@@ -35,14 +35,15 @@ release_min=$(cat $REPO/version/version.go | tail -n 1 | cut -d \  -f 4 | tr -d
 release_maj=$(echo $release_min | cut -d . -f 1-2)
 
 # Build
+mkdir -p $REPO/target/docker
 docker build -t $IMAGE:build $REPO
-docker run --rm --entrypoint cat $IMAGE:build /usr/local/bin/$TARGET > $REPO/"$TARGET"_build_artifact
-docker run --rm --entrypoint cat $IMAGE:build /usr/local/bin/eris-client > $REPO/eris-client
+docker run --rm --entrypoint cat $IMAGE:build /usr/local/bin/$TARGET > $REPO/target/docker/eris-db.dockerartefact
+docker run --rm --entrypoint cat $IMAGE:build /usr/local/bin/eris-client > $REPO/target/docker/eris-client.dockerartefact
 docker build -t $IMAGE:$release_min -f Dockerfile.deploy $REPO
 
 # Cleanup
-rm $REPO/"$TARGET"_build_artifact
-rm $REPO/eris-client
+rm $REPO/target/docker/eris-db.dockerartefact
+rm $REPO/target/docker/eris-client.dockerartefact
 
 # Extra Tags
 if [[ "$branch" = "release" ]]
-- 
GitLab