diff --git a/.gitignore b/.gitignore
index aac4bd31709455db3674060c7759bd8645fa9dbe..5e8cae6c8a9492e30e69384ddc9b78dd4bcbf001 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 /_build/
+/_build*/
 /build/
 /builddir/
 /obj-*/
diff --git a/debian/gitlab-ci.yml b/debian/gitlab-ci.yml
index b918a45189b443fdfe35a6c4e8f58a264aae06e4..5b4858b648785aa9b41e7dd82f0359a1dabc58ba 100644
--- a/debian/gitlab-ci.yml
+++ b/debian/gitlab-ci.yml
@@ -6,7 +6,7 @@ include:
       file: '/steam-gitlab-ci-pipeline.yml'
 
 variables:
-    BUILD_IMAGE: docker.internal.steamos.cloud/steamos/package-builder:buster
+    BUILD_IMAGE: registry.gitlab.steamos.cloud/steamrt/scout/sdk:beta
     STEAM_CI_USE_BINARIES_FROM: autopkgtest
     STEAM_CI_DEPENDENCIES: >-
         debhelper
@@ -28,53 +28,112 @@ variables:
         locales
         meson
         pandoc
+        python3
+        python3.5
+
+    DEBIAN_FRONTEND: noninteractive
+
+    SCOUT_DOCKER_REGISTRY: registry.gitlab.steamos.cloud
+    SCOUT_DOCKER_IMAGE: steamrt/scout/sdk:beta
+    SCOUT_APT_SOURCES_FILE: ''
+    DEVEL_DOCKER_REGISTRY: ''
+    DEVEL_DOCKER_IMAGE: ''
+    # Set non-empty to allow
+    CI_ALLOW_MISSING_SOURCES: ''
 
 stages:
     - build
     - test
 
-autopkgtest:
-    stage: test
-    variables:
-        BUILD_IMAGE: docker.internal.steamos.cloud/steamrt/sdk:scout-latest
-        STEAM_CI_INSTALL_SCRIPT: |
-            # Workaround for the build regression described in !88
-            apt-get -y remove libsteam-runtime-tools-0-helpers
-
-ubsan:
-    stage: test
+build:devel:
+    stage: build
     tags:
         - docker
         - linux
-    image: "${BUILD_IMAGE}"
+    rules:
+        - if: '$DEVEL_DOCKER_REGISTRY != "" && $DEVEL_DOCKER_IMAGE != ""'
+    image: "${DEVEL_DOCKER_REGISTRY}/${DEVEL_DOCKER_IMAGE}"
     script:
         - |
             set -eux
-            export DEBIAN_FRONTEND=noninteractive
 
-            apt-get install -y --no-install-recommends \
-                ccache \
-                clang \
-                clang-tools \
-                ${NULL+}
+            apt-get -y --no-install-recommends install \
+            clang \
+            clang-tools \
+            ${NULL+}
 
-            rm -fr builddir
-            meson \
-                -Db_lundef=false \
-                -Db_sanitize=address,undefined \
-                --werror \
-                builddir
-            ninja -C builddir
-            meson test -C builddir -v
+            meson --werror -Dman=true _build-devel
+            ninja -C _build-devel
+            ninja -C _build-devel install
+            meson test --verbose -C _build-devel
 
             export CC=clang
             export CXX=clang++
 
-            rm -fr builddir
             meson \
                 -Db_lundef=false \
                 -Db_sanitize=address,undefined \
                 --werror \
-                builddir
-            ninja -C builddir scan-build
-            meson test -C builddir -v
+                _build-clang-asan
+            ninja -C _build-clang-asan
+            ninja -C _build-clang-asan scan-build
+            ninja -C _build-clang-asan install
+            meson test --verbose -C _build-clang-asan
+
+    artifacts:
+        paths:
+            - _build-devel/meson-logs/*.txt
+            - _build-clang-asan/meson-logs/*.txt
+
+build:scout:
+    stage: build
+    tags:
+        - docker
+        - linux
+    image: "${SCOUT_DOCKER_REGISTRY}/${SCOUT_DOCKER_IMAGE}"
+    script:
+        - |
+            set -eux
+
+            if [ -n "${SCOUT_APT_SOURCES_FILE}" ]; then
+                cp "${SCOUT_APT_SOURCES_FILE}" /etc/apt/sources.list
+                echo >> /etc/apt/sources.list
+
+                if [ -n "${STEAM_CI_EXTRA_APT_SOURCES-}" ]; then
+                  echo "${STEAM_CI_EXTRA_APT_SOURCES}" | while read -r first rest; do
+                    if [ "x$first" = xboth ]; then
+                      echo "deb $rest" >> /etc/apt/sources.list
+                      echo "deb-src $rest" >> /etc/apt/sources.list
+                    else
+                      echo "$first $rest" >> /etc/apt/sources.list
+                    fi
+                  done
+                fi
+
+                apt-get -y update
+            fi
+
+            # g++ 4.6 is too old (see also debian/rules)
+            export CXX=g++-4.8
+
+            meson \
+              --prefix="$(pwd)/_build-scout/prefix" \
+              -Dsrcdir=src \
+              --werror \
+              _build-scout
+            ninja -C _build-scout
+            meson test --verbose -C _build-scout
+            ninja -C _build-scout install
+
+    artifacts:
+        paths:
+            - _build-scout/meson-logs/*.txt
+
+autopkgtest:
+    stage: test
+    variables:
+        STEAM_CI_INSTALL_SCRIPT: |
+            # Workaround for the build regression described in !88
+            apt-get -y remove libsteam-runtime-tools-0-helpers
+
+# vim:set sw=4 sts=4 et: