Newer
Older
###############################################################################
## Builds ##
###############################################################################
gcc_9_python:
key: "Python-GCC9-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
- build
- dist/
- python3 setup.py bdist_wheel
###############################################################################
.gnu_build_template:
- export CC=gcc
- export CXX=g++
- $CXX --version
- $CC --version
- cmake --version
- mpirun --version
- mkdir -p $CI_PROJECT_DIR/$BUILD_FOLDER
- cd $CI_PROJECT_DIR/$BUILD_FOLDER

Soeren Peters
committed
- cmake ..
-DBUILD_VF_CPU=ON
-DBUILD_VF_GPU=ON
###############################################################################
gcc_9:
extends: .gnu_build_template
###############################################################################
before_script:
- export CC=clang
- export CXX=clang++

Soeren Peters
committed
###############################################################################
gcc_9_rebuild:

Soeren Peters
committed
image: irmb/virtualfluids-deps-ubuntu20.04

Soeren Peters
committed
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

Soeren Peters
committed
- build/gcc_warnings.txt

Soeren Peters
committed
cache:
key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
paths:
- $CI_PROJECT_DIR/cache
###############################################################################
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
msvc_16:
stage: build
tags:
- win
- gpu
variables:
CMAKE_GENERATOR: "Visual Studio 16 2019"
BUILD_CONFIGURATION: "Release"
BUILD_FOLDER: "build"
BUILD_VF_CPU: "ON"
BUILD_VF_GPU: "ON"
BUILD_VF_UNIT_TESTS: "ON"
# add cmake and MSBuild.exe to the path.
# This Needs to be adapted when moved to a new build machine.
before_script:
- git --version
- $env:Path += ";C:\Program Files\CMake\bin\"
- cmake --version
- $env:Path += ";C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"
- MSBuild.exe -version
script:
- cd $CI_PROJECT_DIR
- md -force $env:BUILD_FOLDER
- cd $env:BUILD_FOLDER
- cmake .. -DBUILD_VF_CPU=$env:BUILD_VF_CPU -DBUILD_VF_GPU=$env:BUILD_VF_GPU -DBUILD_VF_UNIT_TESTS=$env:BUILD_VF_UNIT_TESTS -G "$env:CMAKE_GENERATOR" ..
- MSBuild.exe VirtualFluids.sln /property:Configuration=$env:BUILD_CONFIGURATION /verbosity:minimal /maxcpucount:4
cache:

Soeren Peters
committed
key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
paths:
- $CI_PROJECT_DIR/$env:BUILD_FOLDER/
artifacts:
paths:
- $CI_PROJECT_DIR/$env:BUILD_FOLDER/
###############################################################################
build_singularity_image:
stage: build
tags:
- priviliged
- linux
rules:
- if: $CI_COMMIT_TAG
artifacts:
paths:
- Containers/VirtualFluidsOpenMPI.sif
script:
- singularity build Containers/VirtualFluidsOpenMPI.sif Containers/VirtualFluidsOpenMPI.def
- ls -sh Containers/VirtualFluidsOpenMPI.sif
###############################################################################
## Tests ##
###############################################################################
gcc_9_unit_tests:
needs: ["gcc_9"]
- export VF_UNITTESTS=$(find build_gcc9 -name basicsTests)

Soeren Peters
committed
###############################################################################
needs: ["msvc_16"]
before_script:
- cd $CI_PROJECT_DIR/build
script:

Soeren Peters
committed
###############################################################################
- pip3 install $VF_WHEEL
- python3 -m unittest discover -s Python -v
###############################################################################
###############################################################################
clang_build_analyzer_clang_10:
stage: analyze

Soeren Peters
committed
image: irmb/virtualfluids-deps-ubuntu20.04
before_script:
- export CC=clang
- export CXX=clang++
- $CXX --version
- cd /tmp
- git clone https://github.com/aras-p/ClangBuildAnalyzer.git
- cd ClangBuildAnalyzer
- cmake .
- make
- export PATH+=:$(pwd)
script:
- cd $CI_PROJECT_DIR/build

Soeren Peters
committed
- cmake ..
-DBUILD_VF_CPU=ON
-DBUILD_VF_GPU=ON
-DUSE_OPENMP=OFF
-DCMAKE_CXX_FLAGS=-ftime-trace
- ClangBuildAnalyzer --start .
- make
- ClangBuildAnalyzer --stop . CBA

Soeren Peters
committed
###############################################################################
include_what_you_use_clang_10:

Soeren Peters
committed
image: irmb/virtualfluids-deps-ubuntu20.04

Soeren Peters
committed
- 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
- git checkout clang_10
- cmake . -DCMAKE_PREFIX_PATH=/usr/lib/llvm-10
- make
- export PATH+=:$(pwd)/bin
script:

Soeren Peters
committed
- cmake ..
-DBUILD_VF_CPU=ON
-DBUILD_VF_GPU=ON
-DUSE_OPENMP=OFF
-DBUILD_VF_INCLUDE_WHAT_YOU_USE=ON
- make

Soeren Peters
committed
###############################################################################

Soeren Peters
committed
image: irmb/virtualfluids-deps-ubuntu20.04
before_script:
- export DEBIAN_FRONTEND=noninteractive
- apt-get update
script:
- cd $CI_PROJECT_DIR
- cppcheck --version
- cppcheck src --enable=all --xml 2> cppcheck.xml
- cppcheck-htmlreport --file=cppcheck.xml --report-dir=html_report --source-dir=.

Soeren Peters
committed
###############################################################################
# lizard - Cyclomatic Complexity Analyzer
# Ignore warnings is manually set to 191. This job will fail when new warnings are added.

Soeren Peters
committed
image: irmb/virtualfluids-python-deps-ubuntu20.04
before_script:
- cd /tmp
- git clone https://github.com/terryyin/lizard.git
- cd lizard
- lizard --version
script:
- cd $CI_PROJECT_DIR
- lizard -l cpp src/ > lizard.txt --ignore_warnings 191

Soeren Peters
committed
###############################################################################

Soeren Peters
committed
image: irmb/virtualfluids-python-deps-ubuntu20.04
before_script:
- export DEBIAN_FRONTEND=noninteractive
- apt-get update
- pip3 install gcovr
- gcovr --version
script:

Soeren Peters
committed
- 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

Soeren Peters
committed
- gcovr -r $CI_PROJECT_DIR -k build -f "src" --print-summary --html coverage/coverage.html --html-details --xml coverage/coverage.xml

Soeren Peters
committed
- build/

Soeren Peters
committed
key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"

Soeren Peters
committed
- build

Soeren Peters
committed
###############################################################################

Soeren Peters
committed
# this job also produces a compile commands json file.

Soeren Peters
committed
image: irmb/virtualfluids-python-deps-ubuntu20.04
before_script:
- run-clang-tidy -h
script:

Soeren Peters
committed
- mkdir -p $CI_PROJECT_DIR/build
- cd $CI_PROJECT_DIR/build
- cmake ..
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DBUILD_VF_CPU=ON
-DBUILD_VF_GPU=OFF
- python3 ../utilities/filterCompileCommands.py compile_commands.json

Soeren Peters
committed
- build/clangtidy.txt
- build/compile_commands.json
###############################################################################
## Deploy ##
###############################################################################
stage: deploy
before_script:
- 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
- apt-get install -y rsync
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- eval $(ssh-agent -s)
- echo "$SSH_KEY" | tr -d '\r' | ssh-add -
- echo $SSH_KEY >> ansible/private_key
- ssh-keyscan -t rsa $HOST >> ~/.ssh/known_hosts
variables:
SSH_KEY: ""
HOST: ""
###############################################################################
vf_to_phoenix:
extends: .deploy_template
stage: deploy
needs: ["gcc_9_python", "gcc_9_unit_tests", "gcc_9_python_bindings_test"]
variables:
SSH_KEY: "$SSH_PRIVATE_KEY"
HOST: "phoenix.hlr.rz.tu-bs.de"
- ansible-playbook -i ansible/hosts.cfg -u $REMOTE_USER ansible/playbook_vf_deploy.yml
parallel:
matrix:
- ANSIBLE_MATRIX: 0
REMOTE_USER:
- y0054816
vf_wheel_to_jupyterhub:
needs: ["gcc_9_python", "gcc_9_unit_tests", "gcc_9_python_bindings_test"]
variables:
HOST: "finrod.irmb.bau.tu-bs.de"
SSH_KEY: "$SSH_PRIVATE_KEY_JUPYTER_HOST_AT_FINROD"
REMOTE_USER: "jupyter_host"
script:
- ansible-playbook -i ansible/hosts.cfg -u $REMOTE_USER ansible/playbook_jupyter_update.yml

Soeren Peters
committed
###############################################################################
variables:
SSH_KEY: "$SSH_PRIVATE_KEY_ELLADAN"
HOST: "elladan.irmb.bau.tu-bs.de"
- ansible-playbook -i ansible/hosts.cfg -u public_pages ansible/playbook_cppcheck.yml

Soeren Peters
committed
###############################################################################
variables:
SSH_KEY: "$SSH_PRIVATE_KEY_ELLADAN"
HOST: "elladan.irmb.bau.tu-bs.de"
- ansible-playbook -i ansible/hosts.cfg -u public_pages ansible/playbook_gcov.yml

Soeren Peters
committed
###############################################################################
# the reports in this file needs to match the artifacts.
SONAR_HOST_URL: "http://finrod.irmb.bau.tu-bs.de/sonarqube"
needs: ["cppcheck","clang-tidy","gcov_gcc_9","gcc_9_rebuild"]
before_script:
- cd /tmp
- apt-get install unzip
- wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-linux.zip
- unzip sonar-scanner-cli-4.0.0.1744-linux.zip
- cd sonar-scanner-4.0.0.1744-linux/
- echo 'sonar.host.url=http://finrod.irmb.bau.tu-bs.de/sonarqube' >> conf/sonar-scanner.properties
- echo 'sonar.sourceEncoding=UTF-8' >> conf/sonar-scanner.properties
- cat conf/sonar-scanner.properties
- export PATH+=:$(pwd)/bin
- sonar-scanner -v
script:
- cd $CI_PROJECT_DIR
- sonar-scanner

Soeren Peters
committed
###############################################################################
## Release ##
###############################################################################
create_release:
image: registry.gitlab.com/gitlab-org/release-cli:latest
stage: release
needs: ["build_singularity_image"]
rules:
- if: $CI_COMMIT_TAG
script:
- echo "Creating release with tag $CI_COMMIT_TAG"
- release-cli create --name "VirtualFluids $CI_COMMIT_TAG" \
--description "VirtualFluids CFD Simulator" \
--tag-name "$CI_COMMIT_TAG" \
--ref "$CI_COMMIT_SHA" \
--job-token "$CI_JOB_TOKEN" \
--assets-link="{'name':'VirtualFluidsSingularityImage_OpenMPI','url':'','type':'other','filepath':'Containers/VirtualFluidsOpenMPI.sif'}"
- build/bin/basicsTests