From 2f11497c3fe00df9f13fff9aaf519ef1b535dd47 Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Fri, 13 Nov 2020 09:46:47 +0100
Subject: [PATCH] Do a lot of refactoring in gitlab CI file. Make use of the
 new images in a few jobs.

---
 .gitlab-ci.yml | 179 ++++++++++++++++++++++++++-----------------------
 1 file changed, 96 insertions(+), 83 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e3e7fcc72..63bb4ca84 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -61,7 +61,9 @@ gcc_9_python:
     - mpirun --version
     - mkdir -p $CI_PROJECT_DIR/$BUILD_FOLDER
     - cd $CI_PROJECT_DIR/$BUILD_FOLDER
-    - cmake .. -DBUILD_VF_CPU=ON -DBUILD_VF_GPU=ON
+    - cmake ..
+      -DBUILD_VF_CPU=ON
+      -DBUILD_VF_GPU=ON
     - cmake . -LAH
     - make -j4
 
@@ -81,6 +83,43 @@ clang_10:
     - export CXX=clang++
 
 
+###############################################################################
+gcc_9_rebuild:
+  stage: build
+
+  image: irmb/virtualfluids-deps-ubuntu20.04
+
+  tags:
+    - gpu
+    - linux
+
+  before_script:
+    - export CCACHE_BASEDIR=$CI_PROJECT_DIR
+    - export CCACHE_DIR=$CI_PROJECT_DIR/cache
+    - ccache -s
+
+  script:
+    - mkdir -p $CI_PROJECT_DIR/build
+    - cd $CI_PROJECT_DIR/build
+    - rm -r -f ./*
+    - cmake ..
+      -DBUILD_VF_CPU=ON
+      -DBUILD_VF_GPU=ON
+      -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
+      -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache
+      -DCMAKE_C_COMPILER_LAUNCHER=ccache
+    - make -j4  2>&1 | tee gcc_warnings.txt
+    - ccache -s
+
+  artifacts:
+    paths:
+      - build/gcc_warnings.txt
+
+  cache:
+    key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
+    paths:
+      - $CI_PROJECT_DIR/cache
+
 ###############################################################################
 msvc_16:
   stage: build
@@ -114,7 +153,7 @@ msvc_16:
     - MSBuild.exe VirtualFluids.sln /property:Configuration=$env:BUILD_CONFIGURATION /verbosity:minimal /maxcpucount:4
 
   cache:
-    key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG-windows"
+    key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
     paths:
       - $CI_PROJECT_DIR/$env:BUILD_FOLDER/
 
@@ -136,49 +175,6 @@ build_singularity_image:
     - singularity build Containers/VirtualFluidsOpenMPI.sif Containers/VirtualFluidsOpenMPI.def
     - ls -sh Containers/VirtualFluidsOpenMPI.sif
 
-
-###############################################################################
-gcc_9_rebuild:
-  stage: build
-
-  tags:
-    - gpu
-    - linux
-
-  before_script:
-    - export DEBIAN_FRONTEND=noninteractive
-    - apt-get update
-    - apt-get install -y libboost-serialization-dev
-    - cd /tmp
-    - apt-get install -y unzip
-    - wget https://github.com/NVIDIA/cuda-samples/archive/10.1.2.zip
-    - unzip 10.1.2.zip
-    - export NVCUDASAMPLES_ROOT=$(pwd)/cuda-samples-10.1.2
-    - apt-get install -y ccache
-    - ccache --version
-    - export CCACHE_BASEDIR=$CI_PROJECT_DIR
-    - export CCACHE_DIR=$CI_PROJECT_DIR/cache
-    - ccache -s
-
-  script:
-    - cd $CI_PROJECT_DIR
-    - mkdir -p build_gcc_rebuild
-    - cd build_gcc_rebuild
-    - rm -r -f ./*
-    - cmake .. -DBUILD_VF_CPU=ON -DBUILD_VF_GPU=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
-    - make -j4  2>&1 | tee gcc_warnings.txt
-    - ccache -s
-
-  artifacts:
-    paths:
-      - build_gcc_rebuild/gcc_warnings.txt
-
-  cache:
-    key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
-    paths:
-      - $CI_PROJECT_DIR/cache
-
-
 ###############################################################################
 ##                                Tests                                      ##
 ###############################################################################
@@ -193,6 +189,7 @@ gcc_9_python_unit_tests:
   script:
     - $VF_UNITTESTS
 
+###############################################################################
 msvc_16_unit_tests:
   stage: test
 
@@ -208,6 +205,7 @@ msvc_16_unit_tests:
   script:
     - .\bin\Release\basicsTests.exe
 
+###############################################################################
 gcc_9_python_bindings_test:
   stage: test
 
@@ -232,15 +230,13 @@ gcc_9_python_bindings_test:
 clang_build_analyzer_clang_10:
   stage: analyze
 
+  image: irmb/virtualfluids-deps-ubuntu20.04
+
   only: ["schedules"]
 
   needs: []
 
   before_script:
-    - export DEBIAN_FRONTEND=noninteractive
-    - apt-get update
-    - cmake --version
-    - mpirun --version
     - export CC=clang
     - export CXX=clang++
     - $CXX --version
@@ -254,24 +250,30 @@ clang_build_analyzer_clang_10:
   script:
     - mkdir -p $CI_PROJECT_DIR/build
     - cd $CI_PROJECT_DIR/build
-    - rm -r -f ./*
-    - cmake .. -DBUILD_VF_CPU=ON -DUSE_OPENMP=OFF -DCMAKE_CXX_FLAGS=-ftime-trace
+    - cmake ..
+      -DBUILD_VF_CPU=ON
+      -DBUILD_VF_GPU=ON
+      -DUSE_OPENMP=OFF
+      -DCMAKE_CXX_FLAGS=-ftime-trace
     - ClangBuildAnalyzer --start .
     - make
     - ClangBuildAnalyzer --stop . CBA
     - ClangBuildAnalyzer --analyze CBA
 
-
-include_what_you_use_gcc_9:
+###############################################################################
+include_what_you_use_clang_10:
   stage: analyze
 
+  image: irmb/virtualfluids-deps-ubuntu20.04
+
   only: ["schedules"]
 
   needs: []
 
   before_script:
-    - export DEBIAN_FRONTEND=noninteractive
-    - apt-get update
+    - export CC=clang
+    - export CXX=clang++
+    - $CXX --version
     - cd /tmp
     - git clone https://github.com/include-what-you-use/include-what-you-use.git
     - cd include-what-you-use
@@ -279,19 +281,23 @@ include_what_you_use_gcc_9:
     - cmake . -DCMAKE_PREFIX_PATH=/usr/lib/llvm-10
     - make
     - export PATH+=:$(pwd)/bin
-    - echo $PATH
 
   script:
     - mkdir -p $CI_PROJECT_DIR/build
     - cd $CI_PROJECT_DIR/build
-    - rm -r -f ./*
-    - cmake .. -DBUILD_VF_CPU=ON -DUSE_OPENMP=OFF -DBUILD_VF_INCLUDE_WHAT_YOU_USE=ON
+    - cmake ..
+      -DBUILD_VF_CPU=ON
+      -DBUILD_VF_GPU=ON
+      -DUSE_OPENMP=OFF
+      -DBUILD_VF_INCLUDE_WHAT_YOU_USE=ON
     - make
 
-
+###############################################################################
 cppcheck:
   stage: analyze
 
+  image: irmb/virtualfluids-deps-ubuntu20.04
+
   needs: []
 
   before_script:
@@ -310,21 +316,21 @@ cppcheck:
       - html_report/
       - cppcheck.xml
 
+###############################################################################
 # lizard - Cyclomatic Complexity Analyzer
 # Ignore warnings is manually set to 191. This job will fail when new warnings are added.
 lizard:
   stage: analyze
 
+  image: irmb/virtualfluids-python-deps-ubuntu20.04
+
   needs: []
 
   before_script:
-    - export DEBIAN_FRONTEND=noninteractive
-    - apt-get update
     - cd /tmp
     - git clone https://github.com/terryyin/lizard.git
     - cd lizard
     - python3 setup.py install
-    - which lizard
     - lizard --version
 
   script:
@@ -335,10 +341,13 @@ lizard:
     paths:
       - lizard.txt
 
+###############################################################################
 # code coverage
 gcov_gcc_9:
   stage: analyze
 
+  image: irmb/virtualfluids-python-deps-ubuntu20.04
+
   needs: []
 
   before_script:
@@ -346,57 +355,60 @@ gcov_gcc_9:
     - apt-get update
     - pip3 install gcovr
     - gcovr --version
-    - apt-get install -y libboost-serialization-dev
-    - cd /tmp
-    - apt-get install unzip
-    - wget https://github.com/NVIDIA/cuda-samples/archive/10.1.2.zip
-    - unzip 10.1.2.zip
-    - export NVCUDASAMPLES_ROOT=$(pwd)/cuda-samples-10.1.2
 
   script:
-    - mkdir -p $CI_PROJECT_DIR/gcov_build
-    - cd $CI_PROJECT_DIR/gcov_build
-    - cmake .. -DBUILD_VF_CPU=ON -DBUILD_VF_GPU=ON -DBUILD_VF_COVERAGE=ON -DBUILD_VF_UNIT_TESTS=ON
+    - mkdir -p $CI_PROJECT_DIR/build
+    - cd $CI_PROJECT_DIR/build
+    - cmake ..
+      -DBUILD_VF_CPU=ON
+      -DBUILD_VF_GPU=ON
+      -DBUILD_VF_COVERAGE=ON
+      -DBUILD_VF_UNIT_TESTS=ON
     - make -j4
     - ./bin/basicsTests
     - cd ..
     - mkdir coverage
-    - gcovr -r $CI_PROJECT_DIR -k gcov_build -f "src" --print-summary --html coverage/coverage.html --html-details --xml coverage/coverage.xml
+    - gcovr -r $CI_PROJECT_DIR -k build -f "src" --print-summary --html coverage/coverage.html --html-details --xml coverage/coverage.xml
 
   artifacts:
     paths:
       - coverage/
-      - gcov_build/
+      - build/
 
     reports:
       cobertura: coverage/coverage.xml
 
   cache:
-    key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG-gcov"
+    key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
     paths:
-      - gcov_build
+      - build
 
+###############################################################################
 # this job also produces a compile commands json file.
 clang-tidy:
   stage: analyze
 
+  image: irmb/virtualfluids-python-deps-ubuntu20.04
+
   needs: []
 
   before_script:
     - run-clang-tidy -h
 
   script:
-    - cd $CI_PROJECT_DIR
-    - mkdir -p build_clang_tidy
-    - cd build_clang_tidy
-    - cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_VF_CPU=ON -DBUILD_VF_GPU=OFF
+    - mkdir -p $CI_PROJECT_DIR/build
+    - cd $CI_PROJECT_DIR/build
+    - cmake ..
+      -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+      -DBUILD_VF_CPU=ON
+      -DBUILD_VF_GPU=ON
     - python3 ../utilities/filterCompileCommands.py compile_commands.json
     - run-clang-tidy -quiet > clangtidy.txt
 
   artifacts:
     paths:
-      - build_clang_tidy/clangtidy.txt
-      - build_clang_tidy/compile_commands.json
+      - build/clangtidy.txt
+      - build/compile_commands.json
 
 ###############################################################################
 ##                               Deploy                                      ##
@@ -426,7 +438,7 @@ vf_to_phoenix:
         REMOTE_USER:
           - y0054816
 
-
+###############################################################################
 cppcheck_to_elladan:
   stage: deploy
   needs: ["cppcheck"]
@@ -444,7 +456,7 @@ cppcheck_to_elladan:
   script:
     - ansible-playbook -i ansible/hosts.cfg -u public_pages ansible/playbook_cppcheck.yml
 
-
+###############################################################################
 gcov_to_elladan:
   stage: deploy
 
@@ -463,6 +475,7 @@ gcov_to_elladan:
   script:
     - ansible-playbook -i ansible/hosts.cfg -u public_pages ansible/playbook_gcov.yml
 
+###############################################################################
 # sonar-scanner runs sonar-project.properties
 # the reports ins this file needs to match the artifacts.
 sonar-scanner:
-- 
GitLab