diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 32d85a92e9cf2f1197f4793b9b8b4c22bd973993..7c5ea6e111c74558ce79ad99f10b526d56cfa58d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -23,3 +23,6 @@ before_script:
 
 '30':
   <<: *build_job
+
+'31':
+  <<: *build_job
diff --git a/31/Dockerfile b/31/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..ad9bfe8ba0ca111da51807eed9b8394b1a4b6f67
--- /dev/null
+++ b/31/Dockerfile
@@ -0,0 +1,24 @@
+FROM fedora:31
+
+RUN dnf update -y --setopt=install_weak_deps=False
+
+RUN dnf install -y --allowerasing \
+  sudo wget curl which tar expect git \
+  patch rpm-build redhat-rpm-config rpmlint \
+  patch ccache make util-linux \
+  dnf-utils rpmdevtools createrepo \
+ && dnf clean all
+
+RUN wget -O /etc/yum.repos.d/ICINGA-release.repo \
+ https://packages.icinga.com/fedora/ICINGA-release.repo
+
+RUN groupadd -g 1000 build \
+ && useradd -u 1000 -g 1000 -m build \
+ && echo 'Defaults:build !requiretty' | tee -a /etc/sudoers \
+ && echo 'build ALL=(ALL:ALL) NOPASSWD: ALL' | tee -a /etc/sudoers \
+ && chown build.build /usr/local/bin
+
+USER build
+RUN git clone https://git.icinga.com/build-docker/scripts.git /usr/local/bin
+ENTRYPOINT ["/usr/local/bin/icinga-build-entrypoint"]
+CMD ["icinga-build-package"]
diff --git a/31/Makefile b/31/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..f451fe153997996b75db9be5b1b9b967fad97fc4
--- /dev/null
+++ b/31/Makefile
@@ -0,0 +1,2 @@
+VARIANT := x86_64
+include ../image.mk
diff --git a/Makefile b/Makefile
index 88c9ce5e95143c40f786cfadc397e3580fc8c5f1..2a953f93164df3141ec55f26fc399ef65222413d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,9 @@
 all:
 	$(MAKE) -C 29
 	$(MAKE) -C 30
+	$(MAKE) -C 31
 
 push:
 	$(MAKE) -C 29 push
 	$(MAKE) -C 30 push
+	$(MAKE) -C 31 push