diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6562f2c7330f63a7d51cbd88a8eeffb899dee00f..6bac78d99829c93a0a6995394bcba29f23008c31 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,7 @@ stages:
   - deploy_image
   - deploy_application
   - registry_cleanup
-image: docker:19.03.1
+image: ${CI_REGISTRY}/cibuild:19.03.1
 variables:
   DOCKER_TLS_CERTDIR: "/certs"
   #IMAGES_TO_BUILD: "cspp_geo_grb cspp_geo_grb_notify tests/cspp_geo_grb_sender"
@@ -14,7 +14,7 @@ services:
 
 before_script:
   - docker info
-  - docker login -u gitlab-ci-token -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}
+  - docker login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
 
 build_cspp_geo_grb:
   stage: build_image
@@ -22,3 +22,9 @@ build_cspp_geo_grb:
     - docker
   script:
     - ci/build_docker_image.sh
+
+registry_cleanup:
+  stage: registry_cleanup
+  tags: []
+  script:
+    - ci/registry_cleanup.sh
diff --git a/ci/build_docker_image.sh b/ci/build_docker_image.sh
index b853190aeb79f2ddf8c0a02137b9fd0ed6f559af..efcb78f5cfff56bc664fd89d0378d92c9a353921 100755
--- a/ci/build_docker_image.sh
+++ b/ci/build_docker_image.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/usr/bin/env bash
 
 docker_id() {
     # Get docker ID for the specified image
diff --git a/ci/cibuild/Dockerfile b/ci/cibuild/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..4a8d1eefe289ded0e9252dd902a88f2737f6c183
--- /dev/null
+++ b/ci/cibuild/Dockerfile
@@ -0,0 +1,5 @@
+# Custom docker-based build image with a few nice things added
+FROM docker:19.03.1
+RUN apk update && apk upgrade && \
+    apk add findutils bash curl jq && \
+    rm -rf /var/cache/apk/*
diff --git a/ci/registry_cleanup.sh b/ci/registry_cleanup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e17a253767bc5ff83dcbcfdd2c9170d6e78ef19a
--- /dev/null
+++ b/ci/registry_cleanup.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+PROJECT_NAME="cspp_geo%2Fcspp-geo-web-viewer"
+PROJ_URL="${CI_API_V4_URL}/projects/${PROJECT_NAME}"
+registries_json=$(curl -H "PRIVATE_TOKEN: ${CI_JOB_TOKEN}" "${PROJ_URL}/registry/repositories")
+
+registry_id() {
+    echo $registries_json | name="$1" jq '.[] | select(.name == $ENV.name) | .id'
+
+}
+for image_dir in $IMAGES_TO_BUILD; do
+    image_name=$(basename $image_dir)
+    docker_reg_id=$(register_id "$image_name")
+    curl -XDELETE -H "PRIVATE-TOKEN: ${TOKEN}" -d 'name_regex=dev_.*' -d "keep_n=5" "${PROJ_URL}/registry/repositories/${docker_reg_id}/tags"
+done
+