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