diff --git a/.gitlabci/build.sh b/.gitlabci/build.sh
new file mode 100644
index 0000000000000000000000000000000000000000..bd76f40e3b814ff957c6430977446855567bf15f
--- /dev/null
+++ b/.gitlabci/build.sh
@@ -0,0 +1,175 @@
+#!/bin/bash
+
+# build.sh will build a Singularity container. It's not overly complicated.
+#
+# USAGE: build.sh --uri collection-name/container-name --cli registry Singularity
+#        build.sh --uri collection-name/container-name --cli registry
+#        build.sh Singularity
+
+# Copyright (C) 2017-2018 Vanessa Sochat.
+
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
+# License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+set -o errexit
+set -o nounset
+
+function usage() {
+
+    echo "USAGE: build [recipe] [options]"
+    echo ""
+    echo "OPTIONS:
+
+          Image Format
+              --uri   -u    if uploading, a uri to give to sregistry
+              --cli   -c    the sregistry client to use (if uploading)
+              --help  -h    show this help and exit
+              "
+}
+
+# --- Option processing --------------------------------------------------------
+
+uri=""
+cli=""
+tag=""
+
+while true; do
+    case ${1:-} in
+        -h|--help|help)
+            usage
+            exit 0
+        ;;
+        -u|-uri)
+            shift
+            uri="${1:-}"
+            shift
+        ;;
+        -t|--tag)
+            shift
+            tag="${1:-}"
+            shift
+        ;;
+        -c|--cli)
+            shift
+            cli="${1:-}"
+            shift
+        ;;
+        \?) printf "illegal option: -%s\n" "${1:-}" >&2
+            usage
+            exit 1
+        ;;
+        -*)
+            printf "illegal option: -%s\n" "${1:-}" >&2
+            usage
+            exit 1
+        ;;
+        *)
+            break;
+        ;;
+    esac
+done
+
+################################################################################
+### Recipe File ################################################################
+################################################################################
+
+
+if [ $# == 0 ] ; then
+    recipe="Singularity"
+else
+    recipe=$1
+fi
+
+echo ""
+echo "Image Recipe: ${recipe}"
+
+
+################################################################################
+### Storage Client #############################################################
+################################################################################
+
+is_valid_client () {
+  local e match="$1"
+  shift
+  for e; do [[ "$e" == "$match" ]] && return 0; done
+  return 1
+}
+
+# Test if client is valid
+
+clients=("google-storage" "registry" "globus" "dropbox" "google-drive")
+
+if [ "${cli}" != "" ]; then
+    is_valid_client "${cli}" "${clients[@]}"
+    if [ $? -ne 0 ]; then
+        echo "${cli} is not a valid choice! Choose from ${clients[@]}";
+        exit 1
+    fi
+    echo "Storage Client: ${cli}"
+else
+    echo "Storage Client: none"
+fi
+
+
+################################################################################
+### Build! #####################################################################
+################################################################################
+
+# Continue if the image recipe is found
+
+if [ -f "$recipe" ]; then
+
+    imagefile="${recipe}.simg"
+
+    echo "Creating $imagefile using $recipe..."
+    singularity build $imagefile $recipe
+
+    # If the image is successfully built, test it and upload (examples)
+  
+    if [ -f "${imagefile}" ]; then
+
+        # Example testing using run (you could also use test command)
+
+        echo "Testing the image... Marco!"
+        singularity exec $imagefile echo "Polo!"
+
+        # Example sregistry commands to push to endpoints
+
+        if [ "${cli}" != "" ]; then
+
+            # If the uri isn't provided, he gets a robot name
+            if [ "${uri}" == "" ]; then
+                uri=$(python -c "from sregistry.logger.namer import RobotNamer; bot=RobotNamer(); print(bot.generate())")
+            fi
+
+            # If a tag is provided, add to uri
+            if [ "${tag}" != "" ]; then
+                uri="${uri}:${tag}"
+            fi
+
+            echo "Pushing ${uri} to ${cli}://"
+            echo "SREGISTRY_CLIENT=${cli} sregistry push --name ${uri} ${imagefile}"
+            SREGISTRY_CLIENT="${cli}" sregistry push --name "${uri}" "${imagefile}"
+
+        else
+            echo "Skipping upload. Image $imagefile is finished!"
+        fi
+
+    fi
+
+else
+
+    echo "Singularity recipe ${recipe} not found!"
+    exit 1
+
+fi
diff --git a/.gitlabci/setup.sh b/.gitlabci/setup.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e151a8f612a6f9e081ea6168b251725481a1da4b
--- /dev/null
+++ b/.gitlabci/setup.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+apt-get update && apt-get install -y wget git \
+                                          build-essential \
+                                          squashfs-tools \
+                                          libtool \
+                                          autotools-dev \
+                                          libarchive-dev \
+                                          automake \
+                                          autoconf \
+                                          uuid-dev \
+                                          libssl-dev
+
+
+sed -i -e 's/^Defaults\tsecure_path.*$//' /etc/sudoers
+
+# Check Python
+
+echo "Python Version:"
+python --version
+pip install sregistry[all]
+sregistry version
+
+echo "sregistry Version:"
+
+# Install Singularity
+
+cd /tmp && \
+    git clone -b vault/release-2.5 https://www.github.com/sylabs/singularity.git
+    cd singularity && \
+    ./autogen.sh && \
+    ./configure --prefix=/usr/local && \
+    make -j8 && make install
diff --git a/.gitlabci/sregistry-gitlab.png b/.gitlabci/sregistry-gitlab.png
new file mode 100644
index 0000000000000000000000000000000000000000..a14e917a20fb32011329af6bc6abd04012acd0d6
Binary files /dev/null and b/.gitlabci/sregistry-gitlab.png differ
diff --git a/.gitlabci/sregistry-gitlab.xcf b/.gitlabci/sregistry-gitlab.xcf
new file mode 100644
index 0000000000000000000000000000000000000000..f2742162bfc602f92d3d9c5cd573f29e334e042d
Binary files /dev/null and b/.gitlabci/sregistry-gitlab.xcf differ