diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8b15e764abae0844f7d39fc7b9a5098edbc47c3c..b3d728596f00e85b395e5bf8e7fc0c0cd79c4736 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -54,7 +54,21 @@ pylint:
   allow_failure: true
 
 # run unit tests
-unittest:
+unittest_py3.8:
+  tags: [ docker ]
+  stage: test
+  needs: [ ]
+  image: python:3.8
+  script: &python_test_script
+    # Python docker has problems with tox and pip so use plain pytest here
+    - touch ~/.pycaosdb.ini
+    - pip install nose pytest pytest-cov python-dateutil jsonschema==4.0.1
+    - pip install .
+    - python -m pytest unittests
+
+# This needs to be changed once Python 3.9 isn't the standard Python in Debian
+# anymore.
+unittest_py3.9:
   tags: [ docker ]
   stage: test
   needs: [ ]
@@ -62,6 +76,14 @@ unittest:
     - touch ~/.pycaosdb.ini
     - make unittest
 
+
+unittest_py3.10:
+  tags: [ docker ]
+  stage: test
+  needs: [ ]
+  image: python:3.10
+  script: *python_test_script
+
 # Trigger building of server image and integration tests
 trigger_build:
   stage: deploy
@@ -88,12 +110,12 @@ build-testenv:
   stage: setup
   only:
       - schedules
-  script: 
+  script:
     - cd unittests/docker
     - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
       # use here general latest or specific branch latest...
     - docker pull $CI_REGISTRY_IMAGE|| true
-    - docker build 
+    - docker build
       --pull
       --build-arg COMMIT=$CI_COMMIT_SHORT_SHA
       --cache-from $CI_REGISTRY_IMAGE
@@ -105,7 +127,7 @@ build-testenv:
 pages_prepare: &pages_prepare
   tags: [ cached-dind ]
   stage: deploy
-  needs: [ code_style, pylint, unittest ]
+  needs: [ code_style, pylint, unittest_py3.8, unittest_py3.9, unittest_py3.10 ]
   only:
     refs:
       - /^release-.*$/i