diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 39af0cdd64c15f35f00f5157fc57a3bae13aced4..1c99ee05fd3858e1239e4a9775eadbd99dafcf7b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,6 @@
 stages:
     - init
+    - test_projects
     - build_mpich_gcc8
     - build_openmpi_gcc8
     - build_mpich_gcc9
@@ -483,6 +484,36 @@ build-openmpi-complete-gcc10:
             - badges/
     allow_failure: false
 
+test-project-cmake:
+    stage: test_projects
+    image: gitlab.version.fz-juelich.de:5555/slms/loadbalancing/openmpi-gcc10-full:latest
+    tags:
+        - public-docker
+    when: always
+    script:
+        - ./ci/test_project_cmake.sh
+    allow_failure: false
+
+test-project-cmake-subdir:
+    stage: test_projects
+    image: gitlab.version.fz-juelich.de:5555/slms/loadbalancing/openmpi-gcc10-full:latest
+    tags:
+        - public-docker
+    when: always
+    script:
+        - ./ci/test_project_cmake_subdir.sh
+    allow_failure: false
+
+test-project-makefile:
+    stage: test_projects
+    image: gitlab.version.fz-juelich.de:5555/slms/loadbalancing/openmpi-gcc10-full:latest
+    tags:
+        - public-docker
+    when: always
+    script:
+        - ./ci/test_project_makefile.sh
+    allow_failure: false
+
 release:
     stage: release
     only:
diff --git a/ci/ci_funcs.sh b/ci/ci_funcs.sh
index 01776459d731ca27ee07139a6908c5d51216f6e8..399c8fc96c574af689de2727b60e1f8f06fe2471 100644
--- a/ci/ci_funcs.sh
+++ b/ci/ci_funcs.sh
@@ -40,9 +40,8 @@ function find_ALL {
 }
 
 function find_VTK {
-	# todo(s.schulz): This must be adapted for docker images! Right now this
-	# is only correct on my own machine.
-	VTK_DIR="$CI_SCRIPT_PATH/../../vtk_bin"
+	#VTK_DIR="$CI_SCRIPT_PATH/../../vtk_bin" #local machine
+	VTK_DIR=/usr/local
 }
 
 # push badge to tmp-branch and exit
diff --git a/ci/test_project_cmake.sh b/ci/test_project_cmake.sh
index 3f61c20bf7fe7ba8550b5197d3e4292fa5cbc4eb..b52e5d5de8d4b23ea574d31c9f1799db0ca71f02 100755
--- a/ci/test_project_cmake.sh
+++ b/ci/test_project_cmake.sh
@@ -9,7 +9,7 @@ find_VTK #sets VTK_DIR
 
 TEMP=$(mktemp -d)
 
-rsync -aLK ../example/CMakeProject/ "$TEMP"
+cp -rL "$CI_SCRIPT_PATH/../example/CMakeProject/." "$TEMP"
 cd "$TEMP"
 sed -i\
 	-e "/^ALL_ROOT_DIR=/c\\\nALL_ROOT_DIR=\"$ALL_ROOT_DIR\"\n"\
diff --git a/ci/test_project_cmake_subdir.sh b/ci/test_project_cmake_subdir.sh
index bdab524f5dc932a73dcb089d3ef2bfe7c9060ab1..de8605f7dae71d289096f24b6f81e169cedfa5ac 100755
--- a/ci/test_project_cmake_subdir.sh
+++ b/ci/test_project_cmake_subdir.sh
@@ -9,7 +9,7 @@ find_VTK #sets VTK_DIR
 
 TEMP=$(mktemp -d)
 
-rsync -aLK ../example/CMakeProjectSubdir/ "$TEMP"
+cp -rL "$CI_SCRIPT_PATH/../example/CMakeProjectSubdir/." "$TEMP"
 cd "$TEMP"
 ln -s "$ALL_ROOT_DIR" all
 ln -s "$VTK_DIR" vtk_bin
diff --git a/ci/test_project_makefile.sh b/ci/test_project_makefile.sh
index d89ef08b11e79fde1ca9523e3cbedb743a8ea0c0..9f09163fa66debd9ef2abc28f6d677881c850e79 100755
--- a/ci/test_project_makefile.sh
+++ b/ci/test_project_makefile.sh
@@ -9,7 +9,7 @@ find_VTK #sets VTK_DIR
 
 TEMP=$(mktemp -d)
 
-rsync -aLK ../example/MakefileProject/ "$TEMP"
+cp -rL "$CI_SCRIPT_PATH/../example/MakefileProject/." "$TEMP"
 cd "$TEMP"
 sed -i\
 	-e "/^ALL_SOURCE=/c\\\nALL_SOURCE=\"$ALL_ROOT_DIR\"\n"\