# CI pipeline configuration default: image: gmulas/np-tmcode # Switch from branch pipelines to merge request pipelines when a merge request is created workflow: rules: # Ensures next rules do not block triggered pipelines - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push" when: never # always run for merge requests - if: $CI_PIPELINE_SOURCE == "merge_request_event" # never run a branch pipeline if there is an open merge request for that branch - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never # the only allowed branch pipeline is that on the default branch - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH stages: - compatibility - build - run - test compatibility_stage: stage: compatibility tags: ["np-tmcode"] allow_failure: true artifacts: paths: - build/cluster/* - build/sphere/* - build/testing/* - build/trapping/* - build/libnptm/* exclude: - ".git*" - ".git/**/*" expire_in: 2 hours script: # bash commands to be executed - pwd - hostname - echo $CI_COMMIT_SHA - echo $CI_COMMIT_BRANCH - echo "Getting system info ..." - cat /etc/os-release - cd src - echo "Running make with gnu compilers version 11..." - make clean && BUILDDIR=$PWD/../build_gnu11 CXX=g++-11 FC=gfortran-11 make -j - echo "Running make with gnu compilers version 12..." - make clean && BUILDDIR=$PWD/../build_gnu12 CXX=g++-12 FC=gfortran-12 make -j - echo "Running make with gnu compilers version 13..." - make clean && BUILDDIR=$PWD/../build_gnu13 CXX=g++-13 FC=gfortran-13 make -j - echo "Running make with gnu compilers version 14..." - make clean && BUILDDIR=$PWD/../build_gnu14 CXX=g++-14 FC=gfortran-14 make -j - echo "Running make with flang version 16 and clang version 16..." - make clean && BUILDDIR=$PWD/../build_clang16 CXX="clang++-16 -stdlib=libstdc++ -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13" FC=flang-new-16 FCFLAGS=-O3 LDFLAGS="-L/usr/lib/llvm-16/lib -L/usr/lib/gcc/x86_64-linux-gnu/13" make -j - echo "Running make with flang version 17 and clang version 17..." - make clean && BUILDDIR=$PWD/../build_clang17 CXX="clang++-17 -stdlib=libstdc++ -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13" FC=flang-new-17 FCFLAGS=-O3 LDFLAGS="-L/usr/lib/llvm-17/lib -L/usr/lib/gcc/x86_64-linux-gnu/13" make -j - echo "Running make with Intel ifort and Intel icpx..." - make clean && LD_LIBRARY_PATH=/opt/intel/oneapi/compiler/2024.2/lib PATH=/opt/intel/oneapi/compiler/2024.2/bin:$PATH BUILDDIR=$PWD/../build_ifort-icpx CXX=icpx FC=ifort FCFLAGS="-O3 -diag-disable=10448" make -j - echo "Running make with Intel ifx and Intel icpx..." - make clean && LD_LIBRARY_PATH=/opt/intel/oneapi/compiler/2024.2/lib PATH=/opt/intel/oneapi/compiler/2024.2/bin:$PATH BUILDDIR=$PWD/../build_ifx-icpx CXX=icpx FC=ifx FCFLAGS=-O3 make -j - echo "Running make with default MPI compilers" - make clean && BUILDDIR=$PWD/../build_mpi CXX=mpicxx FC=mpif90 USE_MPI=1 make -j building_stage: stage: build tags: ["np-tmcode"] allow_failure: false artifacts: paths: - build/cluster/* - build/sphere/* - build/testing/* - build/trapping/* - build/libnptm/* - doc/build/* exclude: - ".git*" - ".git/**/*" expire_in: 2 hours script: # bash commands to be executed - pwd - hostname - echo $CI_COMMIT_SHA - echo $CI_COMMIT_BRANCH - echo "Getting system info ..." - cat /etc/os-release - cd src - echo "Running make with default compilers..." - make clean && make -j - make docs -j && make -C ../doc/build/latex -j running_stage: stage: run tags: ["np-tmcode"] allow_failure: false needs: - job: building_stage dependencies: - building_stage artifacts: paths: - build/cluster/c_* - build/sphere/c_* #- build/trapping/* exclude: - ".git*" - ".git/**/*" expire_in: 2 hours script: # bash commands to be executed - pwd - hostname - echo $CI_COMMIT_SHA - echo $CI_COMMIT_BRANCH - cd build/sphere - echo "Running np_sphere" - chmod +x np_sphere - ./np_sphere - cd ../cluster - echo "Running np_cluster" - chmod +x np_cluster - ./np_cluster testing_stage: stage: test tags: ["np-tmcode"] allow_failure: false needs: - job: building_stage - job: running_stage dependencies: - building_stage - running_stage artifacts: paths: - build/cluster/pycompare.html - build/sphere/pycompare.html exclude: - ".git*" - ".git/**/*" expire_in: 2 hours script: # bash commands to be executed - pwd - hostname - echo $CI_COMMIT_SHA - echo $CI_COMMIT_BRANCH - cd build/sphere - export FFILE=../../test_data/sphere/OSPH - echo "Comparing output of SPHERE" - python3 ../../src/scripts/pycompare.py --ffile=$FFILE --cfile=c_OSPH --html - echo "Checking consistency among legacy and HDF5 configuration files" - ../testing/test_TEDF ../../test_data/sphere/DEDFB c_TEDF c_TEDF.hd5 - cd ../cluster - echo "Comparing output of CLUSTER" - export FFILE=../../test_data/cluster/OCLU - python3 ../../src/scripts/pycompare.py --ffile=$FFILE --cfile=c_OCLU --html - echo "Testing cluster with 24 spheres" - ./np_cluster ../../test_data/cluster/DEDFB_24 ../../test_data/cluster/DCLU_24 . - echo "Comparing output of CLUSTER with 24 spheres" - export FFILE=../../test_data/cluster/OCLU_24 - python3 ../../src/scripts/pycompare.py --ffile=$FFILE --cfile=c_OCLU --html - echo "Checking consistency among legacy and HDF5 configuration files" - ../testing/test_TEDF ../../test_data/cluster/DEDFB_24 c_TEDF c_TEDF.hd5 - echo "Checking consistency among legacy and HDF5 TM files" - ../testing/test_TTMS c_TTMS c_TTMS.hd5