diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bfbba031864a429bf22387bd3c5fc5ecb9615a53..731c5da68cafbfdd9611e1139b086640a997cece 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -113,22 +113,8 @@ build_docker_image:
     - docker:dind
   tags:
     - docker-in-docker
-  before_script:
-    - >
-      export LAST_COMMIT=$(curl -s \
-        --header "PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" \
-        https://0xacab.org/api/v4/projects/519/pipelines | \
-        python -c "import sys, json; print json.load(sys.stdin)[1]['sha']")
   script:
-    - >
-      if git diff $LAST_COMMIT HEAD --name-only|grep testing/docker; then
-        docker --version
-        docker info
-        docker login -u gitlab-ci-token -e sysdev@leap.se \
-          -p $CI_JOB_TOKEN $CI_REGISTRY
-        docker build -t ${CI_REGISTRY_IMAGE}:latest testing/docker
-        docker push ${CI_REGISTRY_IMAGE}:latest
-      fi
+    - scripts/docker/build-docker-image.sh
 
 package:amd64_jessie:
   variables:
diff --git a/scripts/docker/build-docker-image.sh b/scripts/docker/build-docker-image.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3ef003dc83992932cd40c2d3453a590f96deb00d
--- /dev/null
+++ b/scripts/docker/build-docker-image.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+set -e
+
+if [ -z "${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" ]; then
+  echo "Can't proceed without LEAP_CODE_O_MATIC_PRIVATE_TOKEN variable set."
+  exit 1
+fi
+
+PIPELINE_URL="https://0xacab.org/api/v4/projects/519/pipelines"
+TOKEN_HEADER="PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}"
+PYTHON_CMD="import sys, json; print json.load(sys.stdin)[1]['sha']"
+
+RESPONSE=$(curl -f -s --header "${TOKEN_HEADER}" ${PIPELINE_URL})
+LAST_COMMIT=$(echo "${RESPONSE}" | python -c "${PYTHON_CMD}")
+
+if [ -z "${LAST_COMMIT}" ]; then
+  echo "Can't proceed without LAST_COMMIT variable set."
+  exit 1
+fi
+
+if git diff "${LAST_COMMIT}" HEAD --name-only | grep testing/docker; then
+  docker --version
+  docker info
+  docker login -u gitlab-ci-token -e sysdev@leap.se -p "${CI_JOB_TOKEN}" "${CI_REGISTRY}"
+  docker build -t "${CI_REGISTRY_IMAGE}:latest" testing/docker
+  docker push "${CI_REGISTRY_IMAGE}":latest
+fi
+