diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in
index 7da2c280fc4bfc28e10d45b9f8595261916e1d71..4cc59db0173286b22eb0d00c7dd7d93cf26201b7 100644
--- a/Documentation/Doxyfile.in
+++ b/Documentation/Doxyfile.in
@@ -829,8 +829,7 @@ EXCLUDE                = ${PROJECT_SOURCE_DIR}/ThirdParty \
                          ${PROJECT_SOURCE_DIR}/scripts \
                          ${PROJECT_SOURCE_DIR}/Tests \
                          ${PROJECT_SOURCE_DIR}/Documentation/ProjectFile \
-                         ${PROJECT_SOURCE_DIR}/web \
-                         ${PROJECT_BINARY_DIR}
+                         ${PROJECT_SOURCE_DIR}/web
 
 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
 # directories that are symbolic links (a Unix file system feature) are excluded
diff --git a/Jenkinsfile b/Jenkinsfile
index 9bc9ccdc7e206631cfb2ab9e09185ae6aac3ce59..0050e7c813a8a74c7c173190efef025bcdce35e0 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -91,24 +91,58 @@ pipeline {
               configure {
                 cmakeOptions =
                   '-DOGS_CPU_ARCHITECTURE=generic ' +
-                  '-DDOCS_GENERATE_LOGFILE=ON ' + // redirects to build/DoxygenWarnings.log
                   '-DOGS_USE_PYTHON=ON ' +
                   '-DOGS_BUILD_UTILS=ON '
               }
-              build { }
-              archiveArtifacts 'build/*.tar.gz,build/conaninfo.txt'
+              build { log="build.log" }
               build { target="tests" }
               build { target="ctest" }
               build { target="doc" }
+            }
+          }
+          post {
+            always {
+              xunit([
+                // Testing/-folder is a CTest convention
+                CTest(pattern: 'build/Testing/**/*.xml'),
+                GoogleTest(pattern: 'build/Tests/testrunner.xml')
+              ])
+              recordIssues enabledForFailure: true, filters: [
+                excludeFile('.*qrc_icons\\.cpp.*'), excludeFile('.*QVTKWidget.*')],
+                tools: [gcc4(name: 'GCC', pattern: 'build/build.log')],
+                unstableTotalAll: 3
               // TODO: .*DOT_GRAPH_MAX_NODES.
               //       .*potential recursive class relation.*
-
               recordIssues tools: [doxygen(pattern: 'build/DoxygenWarnings.log')],
                 unstableTotalAll: 24
-              dir('build/docs') { stash(name: 'doxygen') }
+            }
+            success {
               publishHTML(target: [allowMissing: false, alwaysLinkToLastBuild: true,
                   keepAll: true, reportDir: 'build/docs', reportFiles: 'index.html',
                   reportName: 'Doxygen'])
+              archiveArtifacts 'build/*.tar.gz,build/conaninfo.txt'
+              dir('build/docs') { stash(name: 'doxygen') }
+            }
+          }
+        }
+        // *********************** Docker-Conan-GUI *****************************
+        stage('Docker-Conan-GUI') {
+          when {
+            beforeAgent true
+            expression { return stage_required.build || stage_required.full }
+          }
+          agent {
+            dockerfile {
+              filename 'Dockerfile.gcc.full'
+              dir 'scripts/docker'
+              label 'docker'
+              args '-v /home/jenkins/cache:/home/jenkins/cache'
+              additionalBuildArgs '--pull'
+            }
+          }
+          steps {
+            script {
+              sh 'git submodule sync'
               configure {
                 cmakeOptions =
                   '-DOGS_CPU_ARCHITECTURE=generic ' +
@@ -119,21 +153,17 @@ pipeline {
                   '-DOGS_BUILD_TESTS=OFF '
               }
               build { log="build.log" }
-              archiveArtifacts 'build/*.tar.gz'
-              build { target="doc" }
             }
           }
           post {
             always {
-              publishReports { }
               recordIssues enabledForFailure: true, filters: [
                 excludeFile('.*qrc_icons\\.cpp.*'), excludeFile('.*QVTKWidget.*')],
-                tools: [gcc4(name: 'GCC', pattern: 'build/build.log')],
-                unstableTotalAll: 19
-            }
-            success {
-              dir('build/docs') { stash(name: 'doxygen') }
+                tools: [gcc4(name: 'GCC-GUI', id: 'gcc4-gui',
+                             pattern: 'build/build.log')],
+                unstableTotalAll: 4
             }
+            success { archiveArtifacts 'build/*.tar.gz,build/conaninfo.txt' }
           }
         }
         // ********************* Docker-Conan-Debug ****************************
@@ -164,7 +194,11 @@ pipeline {
             }
           }
           post {
-            always { publishReports { } }
+            always {
+              xunit([
+                GoogleTest(pattern: 'build/Tests/testrunner.xml')
+              ])
+            }
           }
         }
         // ************************** envinf1 **********************************
@@ -202,7 +236,12 @@ pipeline {
             }
           }
           post {
-            always { publishReports { } }
+            always {
+              xunit([
+                CTest(pattern: 'build/Testing/**/*.xml'),
+                GoogleTest(pattern: 'build/Tests/testrunner.xml')
+              ])
+            }
           }
         }
         stage('Envinf1 (parallel)') {
@@ -240,7 +279,12 @@ pipeline {
             }
           }
           post {
-            always { publishReports { } }
+            always {
+              xunit([
+                CTest(pattern: 'build/Testing/**/*.xml'),
+                GoogleTest(pattern: 'build/Tests/testrunner.xml')
+              ])
+            }
           }
         }
         // ************************** Windows **********************************
@@ -257,38 +301,33 @@ pipeline {
           }
           steps {
             script {
-              // CLI
               bat 'git submodule sync'
               bat 'conan remove --locks'
-              configure {
-                cmakeOptions =
-                  '-DOGS_DOWNLOAD_ADDITIONAL_CONTENT=ON ' +
-                  '-DOGS_USE_PYTHON=ON '
-              }
-              build { }
-              build { target="tests" }
-              build { target="ctest" }
-              // GUI
+              // CLI + GUI
               configure {
                 cmakeOptions =
                   '-DOGS_DOWNLOAD_ADDITIONAL_CONTENT=ON ' +
                   '-DOGS_USE_PYTHON=ON ' +
                   '-DOGS_BUILD_GUI=ON ' +
                   '-DOGS_BUILD_UTILS=ON ' +
-                  '-DOGS_BUILD_TESTS=OFF ' +
                   '-DOGS_BUILD_SWMM=ON '
               }
+              build { target="tests" }
+              build { target="ctest" }
               build { log="build.log" }
             }
           }
           post {
             always {
-              publishReports { }
+              xunit([
+                CTest(pattern: 'build/Testing/**/*.xml'),
+                GoogleTest(pattern: 'build/Tests/testrunner.xml')
+              ])
               recordIssues enabledForFailure: true, filters: [
                 excludeFile('.*\\.conan.*'), excludeFile('.*ThirdParty.*'),
                 excludeFile('.*thread.hpp')],
                 tools: [msBuild(name: 'MSVC', pattern: 'build/build.log')],
-                unstableTotalAll: 4
+                unstableTotalAll: 1
             }
             success {
               archiveArtifacts 'build/*.zip,build/conaninfo.txt'
@@ -332,7 +371,10 @@ pipeline {
           }
           post {
             always {
-              publishReports { }
+              xunit([
+                CTest(pattern: 'build/Testing/**/*.xml'),
+                GoogleTest(pattern: 'build/Tests/testrunner.xml')
+              ])
               recordIssues enabledForFailure: true, filters: [
                 excludeFile('.*qrc_icons\\.cpp.*'), excludeFile('.*QVTKWidget.*')],
                 tools: [clang(name: 'Clang (macOS)', pattern: 'build/build.log',
diff --git a/scripts/cmake/DocumentationSetup.cmake b/scripts/cmake/DocumentationSetup.cmake
index 8641f08c58e431247e4c0740c65077d2fc22ed25..f6c7ea48429c1082d4da3c5236dbfc92ee51405b 100644
--- a/scripts/cmake/DocumentationSetup.cmake
+++ b/scripts/cmake/DocumentationSetup.cmake
@@ -1,7 +1,6 @@
 if(DOXYGEN_FOUND)
 
     option(DOCS_GENERATE_DOCSET "Generate Dash Docsets." OFF)
-    option(DOCS_GENERATE_LOGFILE "Outputs Doxygen warnings to a file in the build directory." OFF)
 
     set(DOT_FOUND "NO")
     if(DOXYGEN_DOT_FOUND)
@@ -37,7 +36,7 @@ if(DOXYGEN_FOUND)
         configure_file(Documentation/DocsetFeed.xml.in ${PROJECT_BINARY_DIR}/docs/ogs6.xml)
     endif()
 
-    if(DOCS_GENERATE_LOGFILE)
+    if(IS_CI)
         set(OGS_DOXYGEN_LOGFILE "${PROJECT_BINARY_DIR}/DoxygenWarnings.log" CACHE INTERNAL "")
     endif()