From 94bc74250896f1c49fdd26bdb3eea0525a743352 Mon Sep 17 00:00:00 2001
From: Ludovic Claude <ludovic.claude54@gmail.com>
Date: Thu, 25 Aug 2016 18:46:35 +0200
Subject: [PATCH] Normalise Docker build

---
 src/docker/run/Dockerfile => Dockerfile       |  3 +-
 .../build/Dockerfile => Dockerfile.builder    |  2 +-
 build.sh                                      | 29 +++++++++++++++++--
 captain.yml                                   | 20 ++++++-------
 .../builder}/build-in-docker.sh               |  0
 {src/docker/run => docker/runner}/README.md   |  0
 .../runner/config}/application.tmpl           |  2 +-
 {src/docker/run => docker/runner}/slack.json  |  0
 docker_push.sh                                | 16 ++++++++--
 test.sh                                       | 29 +++++++++++++++++--
 10 files changed, 81 insertions(+), 20 deletions(-)
 rename src/docker/run/Dockerfile => Dockerfile (83%)
 rename src/docker/build/Dockerfile => Dockerfile.builder (81%)
 rename {src/docker/build => docker/builder}/build-in-docker.sh (100%)
 rename {src/docker/run => docker/runner}/README.md (100%)
 rename {config => docker/runner/config}/application.tmpl (99%)
 rename {src/docker/run => docker/runner}/slack.json (100%)

diff --git a/src/docker/run/Dockerfile b/Dockerfile
similarity index 83%
rename from src/docker/run/Dockerfile
rename to Dockerfile
index 5fc5c1e58..e93efdf3e 100644
--- a/src/docker/run/Dockerfile
+++ b/Dockerfile
@@ -7,7 +7,8 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize
 RUN tar -C /usr/local/bin -xvzf dockerize-linux-amd64-v0.2.0.tar.gz
 
 COPY ./target/portal-backend-DOCKER_BUILD.jar backend.jar
-COPY ./config/application.tmpl /config/application.tmpl
+COPY ./docker/runner/config/application.tmpl /config/application.tmpl
+COPY ./docker/runner/README.md /
 
 EXPOSE 8080
 
diff --git a/src/docker/build/Dockerfile b/Dockerfile.builder
similarity index 81%
rename from src/docker/build/Dockerfile
rename to Dockerfile.builder
index 51495aebc..97dee452d 100644
--- a/src/docker/build/Dockerfile
+++ b/Dockerfile.builder
@@ -6,7 +6,7 @@ MAINTAINER mirco.nasuti@chuv.ch
 RUN adduser --quiet --uid 1000 build
 USER build
 
-COPY ./build-in-docker.sh /build-in-docker.sh
+COPY ./docker/builder/build-in-docker.sh /build-in-docker.sh
 
 VOLUME /opt/portal/
 WORKDIR /opt/portal/
diff --git a/build.sh b/build.sh
index b524f3458..ef6b40804 100755
--- a/build.sh
+++ b/build.sh
@@ -1,4 +1,29 @@
 #!/usr/bin/env bash
+set -e
 
-export WORKSPACE=$(pwd)
-captain build
+get_script_dir () {
+     SOURCE="${BASH_SOURCE[0]}"
+
+     while [ -h "$SOURCE" ]; do
+          DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+          SOURCE="$( readlink "$SOURCE" )"
+          [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
+     done
+     cd -P "$( dirname "$SOURCE" )"
+     pwd
+}
+
+export WORKSPACE=$(get_script_dir)
+
+if pgrep -lf sshuttle > /dev/null ; then
+  echo "sshuttle detected. Please close this program as it messes with networking and prevents builds inside Docker to work"
+  exit 1
+fi
+
+if groups $USER | grep &>/dev/null '\bdocker\b'; then
+  CAPTAIN="captain"
+else
+  CAPTAIN="sudo captain"
+fi
+
+$CAPTAIN build
diff --git a/captain.yml b/captain.yml
index a6d435576..6ece2f343 100644
--- a/captain.yml
+++ b/captain.yml
@@ -1,25 +1,23 @@
-portal-backend-build:
-  build: ./src/docker/build/Dockerfile
-  image: hbpmip/portal-backend-build
+# Builder image
+# Creates a portable environemnt to build this project.
+# Do not push this image to Docker hub.
+builder:
+  build: Dockerfile.builder
+  image: portal-backend-builder
   pre:
-    - echo "Building portal-backend-build"
+    - echo "Building portal backend builder"
   post:
     - docker run --rm -v $WORKSPACE:/opt/portal/ -v $HOME/.m2:/home/build/.m2/ hbpmip/portal-backend-build
-    - echo "Finished building portal-backend-build"
+    - echo "Finished building portal backend builder"
   test:
     - ./tests/test-build.sh
 
 portal-backend:
-  build: ./src/docker/run/Dockerfile
+  build: Dockerfile
   image: hbpmip/portal-backend
   pre:
     - echo "Building portal-backend"
-    - mkdir -p $WORKSPACE/src/docker/run/config $WORKSPACE/src/docker/run/target
-    - cp $WORKSPACE/config/application.tmpl $WORKSPACE/src/docker/run/config/
-    - cp $WORKSPACE/target/*.jar $WORKSPACE/src/docker/run/target/
   post:
-    - rm -rf $WORKSPACE/src/docker/run/target/
-    - rm -rf $WORKSPACE/src/docker/run/config/
     - echo "Finished building portal-backend"
   test:
     - ./tests/pre-test-run.sh
diff --git a/src/docker/build/build-in-docker.sh b/docker/builder/build-in-docker.sh
similarity index 100%
rename from src/docker/build/build-in-docker.sh
rename to docker/builder/build-in-docker.sh
diff --git a/src/docker/run/README.md b/docker/runner/README.md
similarity index 100%
rename from src/docker/run/README.md
rename to docker/runner/README.md
diff --git a/config/application.tmpl b/docker/runner/config/application.tmpl
similarity index 99%
rename from config/application.tmpl
rename to docker/runner/config/application.tmpl
index dc4987a13..9bed8c6b6 100644
--- a/config/application.tmpl
+++ b/docker/runner/config/application.tmpl
@@ -54,7 +54,7 @@ server:
     timeout: {{ default .Env.SESSION_TIMEOUT "2592000" }}
 
 # ENDPOINTS
-endpoints
+endpoints:
   enabled: true
   health:
     enabled: true
diff --git a/src/docker/run/slack.json b/docker/runner/slack.json
similarity index 100%
rename from src/docker/run/slack.json
rename to docker/runner/slack.json
diff --git a/docker_push.sh b/docker_push.sh
index 606304248..8da820693 100755
--- a/docker_push.sh
+++ b/docker_push.sh
@@ -14,5 +14,17 @@ get_script_dir () {
 }
 
 export WORKSPACE=$(get_script_dir)
-captain push --branch-tags=false --commit-tags=true portal-backend
-curl -k -X POST --data-urlencode payload@$WORKSPACE/src/docker/run/slack.json https://hbps1.chuv.ch/slack/dev-activity
+
+if pgrep -lf sshuttle > /dev/null ; then
+  echo "sshuttle detected. Please close this program as it messes with networking and prevents builds inside Docker to work"
+  exit 1
+fi
+
+if groups $USER | grep &>/dev/null '\bdocker\b'; then
+  CAPTAIN="captain"
+else
+  CAPTAIN="sudo captain"
+fi
+
+$CAPTAIN push --branch-tags=false --commit-tags=true portal-backend
+curl -k -X POST --data-urlencode payload@$WORKSPACE/docker/runner/slack.json https://hbps1.chuv.ch/slack/dev-activity
diff --git a/test.sh b/test.sh
index 4097b32be..98d351fcc 100755
--- a/test.sh
+++ b/test.sh
@@ -1,4 +1,29 @@
 #!/usr/bin/env bash
+set -e
 
-export WORKSPACE=$(pwd)
-captain test
\ No newline at end of file
+get_script_dir () {
+     SOURCE="${BASH_SOURCE[0]}"
+
+     while [ -h "$SOURCE" ]; do
+          DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+          SOURCE="$( readlink "$SOURCE" )"
+          [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
+     done
+     cd -P "$( dirname "$SOURCE" )"
+     pwd
+}
+
+export WORKSPACE=$(get_script_dir)
+
+if pgrep -lf sshuttle > /dev/null ; then
+  echo "sshuttle detected. Please close this program as it messes with networking and prevents builds inside Docker to work"
+  exit 1
+fi
+
+if groups $USER | grep &>/dev/null '\bdocker\b'; then
+  CAPTAIN="captain"
+else
+  CAPTAIN="sudo captain"
+fi
+
+$CAPTAIN test
-- 
GitLab