diff --git a/circle.yml b/circle.yml
index a29094caaa338788f315162c7517d382f3e74b78..a85d9ebfb6f7e7ef9a269d71bddb4c504c2ecd5e 100644
--- a/circle.yml
+++ b/circle.yml
@@ -32,36 +32,13 @@ test:
     # - echo "Running integration tests..." && cd $REPO && "tests/circle_test.sh" # | tee $CIRCLE_ARTIFACTS/output.log; test ${PIPESTATUS[0]} -eq 0"
 
 deployment:
-  release-0.12:
-    branch: release-0.12
-    commands:
-      - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS quay.io
-      # build docker image and tag the image with the version
-      - tests/build_tool.sh
-      - docker push quay.io/monax/db
-  release-0.16:
-    branch: release-0.16
-    commands:
-      - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS quay.io
-      # build docker image and tag the image with the version
-      - tests/build_tool.sh
-      - docker push quay.io/monax/db
   develop:
     branch: develop
     commands:
       - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS quay.io
-      # build docker image and tag the image with the version
+      # build docker image and tag the image with the version, date, and commit hash
       - tests/build_tool.sh
       - docker push quay.io/monax/db
-  master:
-    branch: master
-    commands:
-      - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS quay.io
-      # build docker image and tag the image with ':latest'
-      # builds on master are considered immutable so we do not push the version
-      # tag to allow for hotfixes
-      - tests/build_tool.sh latest
-      - docker push quay.io/monax/db
   tagged-releases:
     tag: /v[0-9]+(\.[0-9]+)*/
     commands:
diff --git a/tests/build_tool.sh b/tests/build_tool.sh
index b91a56c2a0b5da97ba333c242a35a106b993a42b..d6b87173002a9510ee8d837b173b7a3b02970420 100755
--- a/tests/build_tool.sh
+++ b/tests/build_tool.sh
@@ -18,8 +18,8 @@
 
 # ----------------------------------------------------------
 
-TARGET=burrow
 IMAGE=quay.io/monax/db
+VERSION_REGEX="^v[0-9]+\.[0-9]+\.[0-9]+$"
 
 set -e
 
@@ -28,24 +28,40 @@ then
   REPO=`pwd`
   CI="true"
 else
-  REPO=$GOPATH/src/github.com/hyperledger/$TARGET
+  REPO=$GOPATH/src/github.com/hyperledger/burrow
+fi
+
+version=$(cat $REPO/version/version.go | tail -n 1 | cut -d \  -f 4 | tr -d '"')
+tag=$(git tag --points-at HEAD)
+
+# Only label a build as a release version when the commit is tagged
+if [[ ${tag} =~ ${VERSION_REGEX} ]] ; then
+    echo "Building release version (tagged $tag)..."
+    # Fail noisily when trying to build a release version that does not match code tag
+    if [[ ! ${tag} = "v$version" ]]; then
+        echo "Build failure: version tag $tag does not match version/version.go version $version"
+        exit 1
+    fi
+else
+    date=$(date +"%Y%m%d")
+    commit=$(git rev-parse --short HEAD)
+    version="$version-dev-$date-$commit"
+    echo "Building non-release version $version..."
 fi
 
-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/docker/burrow.dockerartefact
+docker run --rm --entrypoint cat $IMAGE:build /usr/local/bin/burrow > $REPO/target/docker/burrow.dockerartefact
 docker run --rm --entrypoint cat $IMAGE:build /usr/local/bin/burrow-client > $REPO/target/docker/burrow-client.dockerartefact
-docker build -t $IMAGE:$release_min -f Dockerfile.deploy $REPO
+docker build -t $IMAGE:$version -f Dockerfile.deploy $REPO
 
 # If provided, tag the image with the label provided
 if [ "$1" ]
 then
-  docker tag $IMAGE:$release_min $IMAGE:$1
-  docker rmi $IMAGE:$release_min
+  docker tag $IMAGE:$version $IMAGE:$1
+  docker rmi $IMAGE:$version
 fi
 
 # Cleanup