diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 077bfcde8b1eb177d0f26373b07039953a13c707..eb1763a1da8406e9fb1f328960f81f5151572b99 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,6 +18,8 @@ variables:
   # Build config
   BUILD_TYPE: Release
   BUILD_PROCESSES: "" # Empty string: builds all processes
+  BUILD_TESTS: "true"
+  BUILD_CTEST: "true"
 
 include:
   - template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
diff --git a/scripts/ci/extends/template-build-linux.yml b/scripts/ci/extends/template-build-linux.yml
index 4a23bc435cbd82932e03f3d5bb96c0c522abc776..995cb4b43695aa7a57e68c2cf59fc5114ab0229d 100644
--- a/scripts/ci/extends/template-build-linux.yml
+++ b/scripts/ci/extends/template-build-linux.yml
@@ -23,9 +23,9 @@
       -DCMAKE_BUILD_TYPE=$BUILD_TYPE
       -DOGS_BUILD_PROCESSES=$BUILD_PROCESSES
     - $BUILD_CMD_PREFIX cmake --build . > >(tee make.output)
-    - $BUILD_CMD_PREFIX cmake --build . --target tests
-    - $BUILD_CMD_PREFIX cmake --build . --target ctest
-    - cp Testing/**/Test.xml Tests/ctest.xml
+    - if $BUILD_TESTS ; then $BUILD_CMD_PREFIX cmake --build . --target tests ; fi
+    - if $BUILD_CTEST ; then $BUILD_CMD_PREFIX cmake --build . --target ctest ; fi
+    - if $BUILD_CTEST ; then cp Testing/**/Test.xml Tests/ctest.xml ; fi
 
   cache:
     paths:
diff --git a/scripts/ci/extends/template-build-win.yml b/scripts/ci/extends/template-build-win.yml
index 82d1a3e80b2938875861746e75411bb1beae679e..35e5837d93d3a88b860b74d9f75351b817a270a4 100644
--- a/scripts/ci/extends/template-build-win.yml
+++ b/scripts/ci/extends/template-build-win.yml
@@ -14,9 +14,9 @@
       -DCMAKE_BUILD_TYPE="$env:BUILD_TYPE"
       -DOGS_BUILD_PROCESSES="$env:BUILD_PROCESSES"
     - cmake --build . --target package | Tee-Object -FilePath make.output
-    - cmake --build . --target tests
-    - cmake --build . --target ctest
-    - cp Testing/**/Test.xml Tests/ctest.xml
+    - if($env:BUILD_TESTS -eq "true") { cmake --build . --target tests }
+    - if($env:BUILD_CTEST -eq "true") { cmake --build . --target ctest }
+    - if($env:BUILD_CTEST -eq "true") { cp Testing/**/Test.xml Tests/ctest.xml }
   artifacts:
     paths:
       - $BUILD_DIR/Tests/ctest.xml
diff --git a/scripts/ci/jobs/build-gui-linux.yml b/scripts/ci/jobs/build-gui-linux.yml
index 62510ad890b0b6e9dab4aef05056a8d1bee05d4d..efc4b9e86ff0308e98088a3dd1269aace033f338 100644
--- a/scripts/ci/jobs/build-gui-linux.yml
+++ b/scripts/ci/jobs/build-gui-linux.yml
@@ -18,6 +18,7 @@ build gui linux:
       allow_failure: true
   variables:
     BUILD_DIR: "build-gui-linux"
+    BUILD_CTEST: "false"
     CMAKE_ARGS: >-
       -DOGS_USE_CONAN=OFF
       -DOGS_BUILD_GUI=ON
diff --git a/scripts/ci/jobs/build-gui-mac.yml b/scripts/ci/jobs/build-gui-mac.yml
index b0d8f49d9c8a9c004b143c77b42cadd7b5f34446..d5f81bccdc8214c234061bede38dc1fea493fbac 100644
--- a/scripts/ci/jobs/build-gui-mac.yml
+++ b/scripts/ci/jobs/build-gui-mac.yml
@@ -16,6 +16,7 @@ build gui mac:
 
   variables:
     BUILD_DIR: "build-gui-mac"
+    BUILD_CTEST: "false"
     CMAKE_ARGS: >-
       -DOGS_USE_CONAN=OFF
       -DOGS_USE_PCH=OFF
diff --git a/scripts/ci/jobs/build-gui-win.yml b/scripts/ci/jobs/build-gui-win.yml
index a902090127e42ec4cc8651e2970628c0665eb48e..12d32cd0b0933f8bb29b8e35fda083bc4b58b7a0 100644
--- a/scripts/ci/jobs/build-gui-win.yml
+++ b/scripts/ci/jobs/build-gui-win.yml
@@ -14,6 +14,7 @@ build gui win:
 
   variables:
     BUILD_DIR: build-gui-win
+    BUILD_CTEST: "false"
     CMAKE_ARGS: >-
       -DOGS_USE_PYTHON=ON
       -DOGS_BUILD_GUI=ON