From 8096443d2781de202ce6c7cb8ebc86a1b765b71b Mon Sep 17 00:00:00 2001 From: Paul Nizenkov Date: Thu, 27 Jul 2023 10:48:09 +0000 Subject: [PATCH] Gitlab CI: Fixed duplicate template definition in .gitlab-ci.yml, download of reggie as a separate job, removed old if clause for DO_NIGHTLY, added a DSMC build job --- .gitlab-ci.yml | 491 ++++++++++---------- docs/documentation/developerguide/reggie.md | 35 ++ 2 files changed, 281 insertions(+), 245 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d5b2d761d..677f8802c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,11 +3,6 @@ # Load modules on new boltzplatz reggie before_script: - ulimit -s unlimited - #- module purge - #- module load cmake - #- module load gcc/9.2.0 - #- module load openmpi/3.1.6/gcc/9.2.0 - #- module load hdf5/1.10.6/gcc/9.2.0/openmpi/3.1.6 - module list - python3 -V || true - python2 -V || true @@ -49,215 +44,213 @@ stages: - deploy # ---------------------------------------------------------------------------------------------------------------------------------------------------- -# Templates +# Templates ("hidden jobs") +# 1. Set the tags and artifacts properties (same for every job) +# 2. Extend parameters for the testing stages in general: allow failure and pull the cached reggie +# 3. Extend parameters for specific testing stages: maxwell, poisson, poisson + PETSc, DSMC +# 4. Extend parameters of each testing stage to the check-in, nightly and weekly testing # ---------------------------------------------------------------------------------------------------------------------------------------------------- -.template: &defaults - tags: - - withmodules-concurrent +# Default parameters for the build and testing stage +.default_build_param: &default_build_param + tags: [withmodules-concurrent] artifacts: name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" expire_in: 1 day when: on_failure - paths: - - build - cache: - key: "${CI_COMMIT_REF_SLUG}" - paths: - - build - policy: pull +# ---------------------------------------------------------------------------------------------------------------------------------------------------- +# Default parameters for the testing stage only (reusing the previous template) +.default_param: &default_param + <<: *default_build_param allow_failure: true + +.reggie_cache: ®gie_cache + key: "reggie" + paths: [reggie] + policy: pull +# ---------------------------------------------------------------------------------------------------------------------------------------------------- +# Defaults for the standard maxwell tests (utilizing "extends" to merge the other "artifacts" options with the specific path) +.defaults: &defaults + extends: .default_param + needs: [build] + artifacts: + paths: [build] + cache: + - *reggie_cache + - key: "${CI_COMMIT_REF_SLUG}" + paths: [build] + policy: pull + +.defaults_checkin: &defaults_checkin + <<: *defaults rules: - if: '$DO_CHECKIN' - if: '$CI_PIPELINE_SOURCE == "push"' -.template: &defaults_nightly - tags: - - withmodules-concurrent - artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure - paths: - - build - cache: - key: "${CI_COMMIT_REF_SLUG}" - paths: - - build - policy: pull - allow_failure: true +.defaults_nightly: &defaults_nightly + <<: *defaults rules: - if: '$DO_NIGHTLY' -.template: &defaults_weekly - tags: - - withmodules-concurrent - artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure - paths: - - build - cache: - key: "${CI_COMMIT_REF_SLUG}" - paths: - - build - policy: pull - allow_failure: true +.defaults_weekly: &defaults_weekly + <<: *defaults rules: - if: '$DO_WEEKLY' - -.template: &defaults_maxwell - tags: - - withmodules-concurrent +# ---------------------------------------------------------------------------------------------------------------------------------------------------- +# Defaults for other maxwell tests with PICLAS_DEBUG_MEMORY=ON +.defaults_maxwell: &defaults_maxwell + extends: .default_param + needs: [build_maxwell] artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure - paths: - - build_maxwell + paths: [build_maxwell] cache: - key: "${CI_COMMIT_REF_SLUG}-MAX" - paths: - - build_maxwell - policy: pull - allow_failure: true + - *reggie_cache + - key: "${CI_COMMIT_REF_SLUG}-MAX" + paths: [build_maxwell] + policy: pull rules: - if: '$DO_CHECKIN' - if: '$CI_PIPELINE_SOURCE == "push"' -.template: &defaults_poisson - tags: - - withmodules-concurrent +# ---------------------------------------------------------------------------------------------------------------------------------------------------- +# Defaults for poisson tests +.defaults_poisson: &defaults_poisson + extends: .default_param + needs: [build_poisson] artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure paths: - build_poisson_release - build_poisson_debug cache: - key: "${CI_COMMIT_REF_SLUG}-POI" - paths: - - build_poisson_release - - build_poisson_debug - policy: pull - allow_failure: true + - *reggie_cache + - key: "${CI_COMMIT_REF_SLUG}-POI" + paths: + - build_poisson_release + - build_poisson_debug + policy: pull + +.defaults_poisson_checkin: &defaults_poisson_checkin + <<: *defaults_poisson rules: - if: '$DO_CHECKIN' - if: '$CI_PIPELINE_SOURCE == "push"' -.template: &defaults_poisson_petsc - tags: - - withmodules-concurrent +.defaults_poisson_nightly: &defaults_poisson_nightly + <<: *defaults_poisson + rules: + - if: '$DO_NIGHTLY' + +# ---------------------------------------------------------------------------------------------------------------------------------------------------- +# Defaults for poisson + PETSC tests +.defaults_poisson_petsc: &defaults_poisson_petsc + extends: .default_param + needs: [build_poisson_petsc] artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure paths: - build_poisson_petsc_release - build_poisson_petsc_debug cache: - key: "${CI_COMMIT_REF_SLUG}-POI-PETSC" - paths: - - build_poisson_petsc_release - - build_poisson_petsc_debug - policy: pull - allow_failure: true + - *reggie_cache + - key: "${CI_COMMIT_REF_SLUG}-POI-PETSC" + paths: + - build_poisson_petsc_release + - build_poisson_petsc_debug + policy: pull + +.defaults_poisson_petsc_checkin: &defaults_poisson_petsc_checkin + <<: *defaults_poisson_petsc rules: - if: '$DO_CHECKIN' - if: '$CI_PIPELINE_SOURCE == "push"' -.template: &defaults_poisson_nightly - tags: - - withmodules-concurrent - artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure - paths: - - build_poisson_release - - build_poisson_debug - cache: - key: "${CI_COMMIT_REF_SLUG}-POI" - paths: - - build_poisson_release - - build_poisson_debug - policy: pull - allow_failure: true +.defaults_poisson_petsc_nightly: &defaults_poisson_petsc_nightly + <<: *defaults_poisson_petsc rules: - if: '$DO_NIGHTLY' -.template: &defaults_poisson_petsc_nightly - tags: - - withmodules-concurrent +# ---------------------------------------------------------------------------------------------------------------------------------------------------- +# Defaults for DSMC tests +.defaults_DSMC: &defaults_DSMC + extends: .default_param + needs: [build_DSMC] artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure paths: - - build_poisson_petsc_release - - build_poisson_petsc_debug + - build_DSMC_release + - build_DSMC_debug + - build_DSMC_N1 cache: - key: "${CI_COMMIT_REF_SLUG}-POI-PETSC" - paths: - - build_poisson_petsc_release - - build_poisson_petsc_debug - policy: pull - allow_failure: true + - *reggie_cache + - key: "${CI_COMMIT_REF_SLUG}-DSMC" + paths: + - build_DSMC_release + - build_DSMC_debug + - build_DSMC_N1 + policy: pull + +.defaults_DSMC_checkin: &defaults_DSMC_checkin + <<: *defaults_DSMC + rules: + - if: '$DO_CHECKIN' + - if: '$CI_PIPELINE_SOURCE == "push"' + +.defaults_DSMC_nightly: &defaults_DSMC_nightly + <<: *defaults_DSMC rules: - if: '$DO_NIGHTLY' +.defaults_DSMC_weekly: &defaults_DSMC_weekly + <<: *defaults_DSMC + rules: + - if: '$DO_WEEKLY' + # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "build": Build on check-in # ---------------------------------------------------------------------------------------------------------------------------------------------------- + +reggie_download: + extends: .default_build_param + artifacts: + paths: [reggie] + cache: + key: "reggie" + paths: [reggie] + policy: push + stage: build + script: + - git clone git@piclas.boltzplatz.eu:reggie2.0/reggie2.0.git reggie + build: - tags: - - withmodules-concurrent + extends: .default_build_param + needs: [reggie_download] artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure - paths: - - build + paths: [build] cache: key: "${CI_COMMIT_REF_SLUG}" - paths: - - build + paths: [build] policy: push stage: build script: - mkdir -p build ; cd build - - git clone git@piclas.boltzplatz.eu:reggie2.0/reggie2.0.git reggie #- cmake .. -DLIBS_BUILD_HDF5=OFF -DPICLAS_BUILD_POSTI=ON -DPOSTI_BUILD_SUPERB=ON -DPICLAS_READIN_CONSTANTS=ON ; $GENERATOR -j all - cmake -GNinja .. -DLIBS_BUILD_HDF5=OFF -DPICLAS_BUILD_POSTI=ON -DPOSTI_BUILD_SUPERB=ON -DPICLAS_READIN_CONSTANTS=ON ; ninja -j0 all build_maxwell: - tags: - - withmodules-concurrent + extends: .default_build_param + needs: [reggie_download] artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure - paths: - - build_maxwell + paths: [build_maxwell] cache: key: "${CI_COMMIT_REF_SLUG}-MAX" - paths: - - build_maxwell + paths: [build_maxwell] policy: push stage: build script: - mkdir -p build_maxwell ; cd build_maxwell - - git clone git@piclas.boltzplatz.eu:reggie2.0/reggie2.0.git reggie - cmake .. -DPICLAS_DEBUG_MEMORY=ON -DPICLAS_PARTICLES=OFF -DLIBS_BUILD_HDF5=OFF -DPICLAS_READIN_CONSTANTS=ON ; $GENERATOR -j $NCORES all build_poisson: - tags: - - withmodules-concurrent + extends: .default_build_param + needs: [reggie_download] artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure paths: - build_poisson_release - build_poisson_debug @@ -270,20 +263,15 @@ build_poisson: stage: build script: - mkdir -p build_poisson_release ; cd build_poisson_release - - git clone git@piclas.boltzplatz.eu:reggie2.0/reggie2.0.git reggie - cmake .. -DCMAKE_BUILD_TYPE=Release -DPICLAS_EQNSYSNAME=poisson -DPICLAS_CODE_ANALYZE=ON -DPICLAS_TIMEDISCMETHOD=RK3 -DLIBS_BUILD_HDF5=OFF ; $GENERATOR -j $NCORES all - cd .. - mkdir -p build_poisson_debug ; cd build_poisson_debug - - cp -r ../build_poisson_release/reggie . - cmake .. -DCMAKE_BUILD_TYPE=Debug -DPICLAS_EQNSYSNAME=poisson -DPICLAS_CODE_ANALYZE=ON -DPICLAS_TIMEDISCMETHOD=RK3 -DLIBS_BUILD_HDF5=OFF ; $GENERATOR -j $NCORES all build_poisson_petsc: - tags: - - withmodules-concurrent + extends: .default_build_param + needs: [reggie_download] artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure paths: - build_poisson_petsc_release - build_poisson_petsc_debug @@ -296,16 +284,41 @@ build_poisson_petsc: stage: build script: - mkdir -p build_poisson_petsc_release ; cd build_poisson_petsc_release - - git clone git@piclas.boltzplatz.eu:reggie2.0/reggie2.0.git reggie - cmake .. -DCMAKE_BUILD_TYPE=Release -DPICLAS_EQNSYSNAME=poisson -DPICLAS_PETSC=ON -DPICLAS_CODE_ANALYZE=ON -DPICLAS_TIMEDISCMETHOD=RK3 -DLIBS_BUILD_HDF5=OFF ; $GENERATOR -j $NCORES all - cd .. - mkdir -p build_poisson_petsc_debug ; cd build_poisson_petsc_debug - - cp -r ../build_poisson_petsc_release/reggie . - cmake .. -DCMAKE_BUILD_TYPE=Debug -DPICLAS_EQNSYSNAME=poisson -DPICLAS_PETSC=ON -DPICLAS_CODE_ANALYZE=ON -DPICLAS_TIMEDISCMETHOD=RK3 -DLIBS_BUILD_HDF5=OFF ; $GENERATOR -j $NCORES all +build_DSMC: + extends: .default_build_param + needs: [reggie_download] + artifacts: + paths: + - build_DSMC_release + - build_DSMC_debug + - build_DSMC_N1 + cache: + key: "${CI_COMMIT_REF_SLUG}-DSMC" + paths: + - build_DSMC_release + - build_DSMC_debug + - build_DSMC_N1 + policy: push + stage: build + script: + - mkdir -p build_DSMC_release ; cd build_DSMC_release + - cmake .. -DCMAKE_BUILD_TYPE=Release -DPICLAS_TIMEDISCMETHOD=DSMC -DLIBS_BUILD_HDF5=OFF ; $GENERATOR -j $NCORES all + - cd .. + - mkdir -p build_DSMC_debug ; cd build_DSMC_debug + - cmake .. -DCMAKE_BUILD_TYPE=Debug -DPICLAS_TIMEDISCMETHOD=DSMC -DLIBS_BUILD_HDF5=OFF ; $GENERATOR -j $NCORES all + - cd .. + - mkdir -p build_DSMC_N1 ; cd build_DSMC_N1 + - cmake .. -DCMAKE_BUILD_TYPE=Release -DPICLAS_TIMEDISCMETHOD=DSMC -DLIBS_BUILD_HDF5=OFF -DPICLAS_POLYNOMIAL_DEGREE=1 ; $GENERATOR -j $NCORES all + build_hopr: - tags: - - withmodules-concurrent + extends: .default_build_param + artifacts: + paths: [hopr] stage: build script: - git clone https://github.com/hopr-framework/hopr.git hopr; @@ -323,13 +336,14 @@ build_hopr: - if: '$DO_WEEKLY' build_hopr_in_piclas: - tags: - - withmodules-concurrent + tags: [withmodules-concurrent] + needs: [reggie_download] + cache: + <<: *reggie_cache stage: build script: - mkdir -p build_hopr_lib ; cd build_hopr_lib - - git clone git@piclas.boltzplatz.eu:reggie2.0/reggie2.0.git reggie - - python ./reggie/reggie.py ../regressioncheck/WEK_HOPR + - python ../reggie/reggie.py ../regressioncheck/WEK_HOPR rules: - if: '$DO_WEEKLY' - if: '$DO_CORE_SPLIT' @@ -338,8 +352,7 @@ build_hopr_in_piclas: when: never build_no_git: - tags: - - withmodules-concurrent + tags: [withmodules-concurrent] stage: build script: - echo " Installing branch $CI_COMMIT_REF_NAME without git" @@ -352,8 +365,7 @@ build_no_git: - if: '$DO_WEEKLY' build_no_git_libs: - tags: - - withmodules-concurrent + tags: [withmodules-concurrent] stage: build script: - echo " Installing branch $CI_COMMIT_REF_NAME without git but with external libs" @@ -372,41 +384,41 @@ build_no_git_libs: # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_checkin": Run most simple reggie with previous builds on check-in # ---------------------------------------------------------------------------------------------------------------------------------------------------- -default: - <<: *defaults +run_basic: + <<: *defaults_checkin stage: reggie_checkin script: - - cd build ; python ./reggie/reggie.py ../regressioncheck/run_basic/maxwell -e ./bin/piclas + - cd build ; python ../reggie/reggie.py ../regressioncheck/run_basic/maxwell -e ./bin/piclas maxwell: <<: *defaults_maxwell stage: reggie_checkin script: - - cd build_maxwell ; python ./reggie/reggie.py ../regressioncheck/CHE_maxwell/maxwell -e ./bin/piclas + - cd build_maxwell ; python ../reggie/reggie.py ../regressioncheck/CHE_maxwell/maxwell -e ./bin/piclas poisson_release: - <<: *defaults_poisson + <<: *defaults_poisson_checkin stage: reggie_checkin script: - - cd build_poisson_release ; python ./reggie/reggie.py ../regressioncheck/CHE_poisson -e ./bin/piclas + - cd build_poisson_release ; python ../reggie/reggie.py ../regressioncheck/CHE_poisson -e ./bin/piclas poisson_debug: - <<: *defaults_poisson + <<: *defaults_poisson_checkin stage: reggie_checkin script: - - cd build_poisson_debug ; python ./reggie/reggie.py ../regressioncheck/CHE_poisson -e ./bin/piclas + - cd build_poisson_debug ; python ../reggie/reggie.py ../regressioncheck/CHE_poisson -e ./bin/piclas poisson_petsc_release: - <<: *defaults_poisson_petsc + <<: *defaults_poisson_petsc_checkin stage: reggie_checkin script: - - cd build_poisson_petsc_release ; python ./reggie/reggie.py ../regressioncheck/CHE_poisson -e ./bin/piclas + - cd build_poisson_petsc_release ; python ../reggie/reggie.py ../regressioncheck/CHE_poisson -e ./bin/piclas poisson_petsc_debug: - <<: *defaults_poisson_petsc + <<: *defaults_poisson_petsc_checkin stage: reggie_checkin script: - - cd build_poisson_petsc_debug ; python ./reggie/reggie.py ../regressioncheck/CHE_poisson -e ./bin/piclas + - cd build_poisson_petsc_debug ; python ../reggie/reggie.py ../regressioncheck/CHE_poisson -e ./bin/piclas # ---------------------------------------------------------------------------------------------------------------------------------------------------- @@ -415,35 +427,37 @@ poisson_petsc_debug: # - feature_PIC_single_particle_PML : 4^3 cart box with a particle and 1 cell layer PMLs for all directions # ---------------------------------------------------------------------------------------------------------------------------------------------------- CHE_PIC_maxwell_RK4: - <<: *defaults + <<: *defaults_checkin stage: reggie_feature_checkin script: - - cd build ; python ./reggie/reggie.py ../regressioncheck/CHE_PIC_maxwell_RK4 -e ./bin/piclas + - cd build ; python ../reggie/reggie.py ../regressioncheck/CHE_PIC_maxwell_RK4 -e ./bin/piclas # Commented out 07/12/2020 - to be fixed (this reggie fails due to bug in implicit particle tracking) #CHE_PIC_maxwell_implicitBC: - # <<: *defaults + # <<: *defaults_checkin # stage: reggie_feature_checkin # script: - # - cd build ; python ./reggie/reggie.py ../regressioncheck/CHE_PIC_maxwell_implicitBC + # - cd build ; python ../reggie/reggie.py ../regressioncheck/CHE_PIC_maxwell_implicitBC CHE_DSMC: - <<: *defaults + <<: *defaults_DSMC_checkin stage: reggie_feature_checkin script: - - cd build ; python ./reggie/reggie.py ../regressioncheck/CHE_DSMC + - cd build_DSMC_release ; python ../reggie/reggie.py ../regressioncheck/CHE_DSMC -e ./bin/piclas + - cd .. + - cd build_DSMC_N1 ; python ../reggie/reggie.py ../regressioncheck/CHE_DSMC -e ./bin/piclas CHE_BGK: - <<: *defaults + <<: *defaults_checkin stage: reggie_feature_checkin script: - - cd build ; python ./reggie/reggie.py ../regressioncheck/CHE_BGK + - cd build ; python ../reggie/reggie.py ../regressioncheck/CHE_BGK CHE_FPFlow: - <<: *defaults + <<: *defaults_checkin stage: reggie_feature_checkin script: - - cd build ; python ./reggie/reggie.py ../regressioncheck/CHE_FPFlow + - cd build ; python ../reggie/reggie.py ../regressioncheck/CHE_FPFlow # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_DSMC_nightly": Build and run chemistry examples on nightly (check reaction rates in RESERVOIR simulation) @@ -452,46 +466,50 @@ NIG_Reservoir: <<: *defaults_nightly stage: reggie_DSMC_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build/ ; python ./reggie/reggie.py ../regressioncheck/NIG_Reservoir ; fi + - cd build/ ; python ../reggie/reggie.py ../regressioncheck/NIG_Reservoir # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_DSMC_nightly": Build and run tracking examples on nightly # ---------------------------------------------------------------------------------------------------------------------------------------------------- NIG_Tracking: - <<: *defaults_nightly + <<: *defaults_DSMC_nightly stage: reggie_DSMC_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build/ ; python ./reggie/reggie.py ../regressioncheck/NIG_tracking_DSMC ; fi + - cd build_DSMC_debug/ ; python ../reggie/reggie.py ../regressioncheck/NIG_tracking_DSMC -e ./bin/piclas # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_DSMC_nightly": Build and run DSMC examples on nightly # ---------------------------------------------------------------------------------------------------------------------------------------------------- NIG_DSMC: - <<: *defaults_nightly + <<: *defaults_DSMC_nightly stage: reggie_DSMC_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build/ ; python ./reggie/reggie.py ../regressioncheck/NIG_DSMC ; fi + - cd build_DSMC_release/ ; python ../reggie/reggie.py ../regressioncheck/NIG_DSMC -e bin/piclas + - cd .. + - cd build_DSMC_debug/ ; python ../reggie/reggie.py ../regressioncheck/NIG_DSMC -e bin/piclas # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_tools_nightly": Build and run superB and piclas2vtk examples on nightly # ---------------------------------------------------------------------------------------------------------------------------------------------------- NIG_SuperB_piclas: <<: *defaults_nightly + needs: [build] stage: reggie_tools_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_SuperB -e ./bin/piclas ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_SuperB -e ./bin/piclas NIG_SuperB_standalone: <<: *defaults_nightly + needs: [build] stage: reggie_tools_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_SuperB -e ./bin/superB ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_SuperB -e ./bin/superB NIG_piclas2vtk: <<: *defaults_nightly stage: reggie_tools_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_piclas2vtk ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_piclas2vtk # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_bgk_nightly": Build and run BGK-Flow examples on nightly (CURRENTLY NO NIGHTLY TEST FOR BGK) @@ -499,10 +517,9 @@ NIG_piclas2vtk: # gnu_NIG_BGK-Flow: # <<: *defaults_nightly # stage: reggie_bgk_nightly -# tags: -# - withmodules-concurrent +# tags: [withmodules-concurrent] # script: -# - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_BGK-Flow ; fi +# - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_BGK-Flow # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_nightly": Build and run @@ -520,98 +537,98 @@ NIG_dielectric: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_dielectric ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_dielectric NIG_PIC_maxwell_RK4: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_maxwell_RK4/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_maxwell_RK4/ NIG_convtest_maxwell: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_convtest_maxwell ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_convtest_maxwell NIG_convtest_t_maxwell: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_convtest_t_maxwell ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_convtest_t_maxwell NIG_convtest_t_poisson: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_convtest_t_poisson ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_convtest_t_poisson NIG_convtest_poisson: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_convtest_poisson ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_convtest_poisson NIG_PIC_poisson_RK3: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_RK3/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_RK3/ NIG_PIC_poisson_Boris-Leapfrog: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_Boris-Leapfrog/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_Boris-Leapfrog/ NIG_PIC_poisson_Leapfrog: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_Leapfrog/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_Leapfrog/ # NIG_PIC_poisson_Leapfrog_not_working: # <<: *defaults_nightly # stage: reggie_nightly # script: - # - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_Leapfrog_not_working/ ; fi + # - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_Leapfrog_not_working/ # Crank-Nicolson (2nd order implicit) time integration # NIG_PIC_poisson_powerdensity: # <<: *defaults_nightly # stage: reggie_nightly # script: - # - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_powerdensity/ ; fi + # - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_powerdensity/ NIG_poisson: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_poisson/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_poisson/ NIG_poisson_PETSC: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_poisson_PETSC/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_poisson_PETSC/ NIG_maxwell_RK4: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_maxwell_RK4/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_maxwell_RK4/ NIG_PIC_poisson_plasma_wave: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_plasma_wave/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_plasma_wave/ NIG_maxwell_dipole_dielectric: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_maxwell_dipole_dielectric/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_maxwell_dipole_dielectric/ # Commented out 07/12/2020 - to be fixed: # this reggie has two examples: @@ -621,68 +638,62 @@ NIG_maxwell_dipole_dielectric: # <<: *defaults_nightly # stage: reggie_nightly # script: - # - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_implicit04/ ; fi + # - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_poisson_implicit04/ NIG_LoadBalance: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_LoadBalance/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_LoadBalance/ NIG_code_analyze: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_code_analyze/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_code_analyze/ NIG_IntKind8: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_IntKind8/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_IntKind8/ NIG_PIC_Deposition: <<: *defaults_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_PIC_Deposition/ ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_PIC_Deposition/ # Add surf model (SEE) 13% probabilty test case here #feature_SurfaceModel: # <<: *defaults_nightly # stage: reggie_nightly -# tags: -# - withmodules-concurrent # script: -# - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_SurfaceModel/ ; fi +# - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_SurfaceModel/ NIG_Photoionization_release: <<: *defaults_poisson_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build_poisson_release ; fi - - if [ -n "${DO_NIGHTLY}" ]; then python ./reggie/reggie.py ../regressioncheck/NIG_Photoionization -e ./bin/piclas ; fi + - cd build_poisson_release; python ../reggie/reggie.py ../regressioncheck/NIG_Photoionization -e ./bin/piclas NIG_Photoionization_debug: <<: *defaults_poisson_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build_poisson_debug ; fi - - if [ -n "${DO_NIGHTLY}" ]; then python ./reggie/reggie.py ../regressioncheck/NIG_Photoionization -e ./bin/piclas ; fi + - cd build_poisson_debug; python ../reggie/reggie.py ../regressioncheck/NIG_Photoionization -e ./bin/piclas NIG_Photoionization_petsc_release: <<: *defaults_poisson_petsc_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build_poisson_petsc_release ; fi - - if [ -n "${DO_NIGHTLY}" ]; then python ./reggie/reggie.py ../regressioncheck/NIG_Photoionization -e ./bin/piclas ; fi + - cd build_poisson_petsc_release; python ../reggie/reggie.py ../regressioncheck/NIG_Photoionization -e ./bin/piclas NIG_Photoionization_petsc_debug: <<: *defaults_poisson_petsc_nightly stage: reggie_nightly script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build_poisson_petsc_debug ; fi - - if [ -n "${DO_NIGHTLY}" ]; then python ./reggie/reggie.py ../regressioncheck/NIG_Photoionization -e ./bin/piclas ; fi + - cd build_poisson_petsc_debug; python ../reggie/reggie.py ../regressioncheck/NIG_Photoionization -e ./bin/piclas # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_nightly_build_all": Build and run @@ -694,19 +705,19 @@ build_all: <<: *defaults_nightly stage: reggie_nightly_build_all script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/run_basic ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/run_basic build_sanitize: <<: *defaults_nightly stage: reggie_nightly_build_all script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_sanitize ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_sanitize build_math_tools: <<: *defaults_nightly stage: reggie_nightly_build_all script: - - if [ -n "${DO_NIGHTLY}" ]; then cd build ; python ./reggie/reggie.py ../regressioncheck/NIG_math_libs ; fi + - cd build ; python ../reggie/reggie.py ../regressioncheck/NIG_math_libs # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "reggie_weekly": Build and run examples once a week @@ -716,51 +727,44 @@ WEK_PIC_maxwell: <<: *defaults_weekly stage: reggie_weekly script: - - cd build - - python ./reggie/reggie.py ../regressioncheck/WEK_PIC_maxwell + - cd build ; python ../reggie/reggie.py ../regressioncheck/WEK_PIC_maxwell WEK_PIC_poisson: <<: *defaults_weekly stage: reggie_weekly script: - - cd build - - python ./reggie/reggie.py ../regressioncheck/WEK_PIC_poisson + - cd build ; python ../reggie/reggie.py ../regressioncheck/WEK_PIC_poisson WEK_DSMC: - <<: *defaults_weekly + <<: *defaults_DSMC_weekly stage: reggie_weekly script: - - cd build - - python ./reggie/reggie.py ../regressioncheck/WEK_DSMC + - cd build_DSMC_release ; python ../reggie/reggie.py ../regressioncheck/WEK_DSMC -e bin/piclas WEK_Reservoir: <<: *defaults_weekly stage: reggie_weekly script: - - cd build - - python ./reggie/reggie.py ../regressioncheck/WEK_Reservoir + - cd build ; python ../reggie/reggie.py ../regressioncheck/WEK_Reservoir WEK_FPFlow: <<: *defaults_weekly stage: reggie_weekly script: - - cd build - - python ./reggie/reggie.py ../regressioncheck/WEK_FPFlow + - cd build ; python ../reggie/reggie.py ../regressioncheck/WEK_FPFlow WEK_BGKFlow: <<: *defaults_weekly stage: reggie_weekly script: - - cd build - - python ./reggie/reggie.py ../regressioncheck/WEK_BGKFlow + - cd build ; python ../reggie/reggie.py ../regressioncheck/WEK_BGKFlow # ---------------------------------------------------------------------------------------------------------------------------------------------------- # Stage "documentation": Compile the userguide and developer guide # ---------------------------------------------------------------------------------------------------------------------------------------------------- documentation: + extends: .default_build_param stage: documentation - tags: - - withmodules-concurrent script: - cd docs/documentation - python3 -m pip install --exists-action=w --no-cache-dir -r requirements.txt @@ -773,9 +777,6 @@ documentation: - ls -l - ls -l piclas.pdf artifacts: - name: "${CI_PIPELINE_ID}-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}" - expire_in: 1 day - when: on_failure paths: - docs/documentation diff --git a/docs/documentation/developerguide/reggie.md b/docs/documentation/developerguide/reggie.md index a6fefd0ff..bba2b2565 100644 --- a/docs/documentation/developerguide/reggie.md +++ b/docs/documentation/developerguide/reggie.md @@ -23,6 +23,41 @@ of the different tests is given under https://github.com/piclas-framework/piclas The automatic execution by *gitlab-runners* can be performed on any machine that is connected to the internet and in the following section, the setup of such a machine is described +## Local Testing of GitLab CI + +To locally test the GitLab CI (including a YAML verification), [gitlab-ci-local](https://github.com/firecow/gitlab-ci-local) can be used. An installation guide can be found here: [Link](https://github.com/firecow/gitlab-ci-local#linux-based-on-debian). After a successful installation, you can view the available parameters through +``` +gitlab-ci-local --help +``` +To view the stages for the default check-in pipeline, execute in the main folder of piclas: +``` +gitlab-ci-local --list +``` +To view all stages and tests: +``` +gitlab-ci-local --list-all +``` +To execute the check-in pipeline locally (ie. the jobs that were shown with the `--list` command), use +``` +gitlab-ci-local --shell-isolation +``` +to avoid errors due to parallel writing of the ctags.txt file. An alternative is to limit the concurrent execution to one job, which +is analogous to the current configuration on the Gitlab Runner (requires gitlab-ci-local in version 4.42.0) +``` +gitlab-ci-local --concurrency=1 +``` +It should be noted that currently the cache creation & utilization does not seem to represent the remote execution, meaning that some +errors might only be recognized after a push to the remote. A specific job can be executed simply by reference its name, and to also +consider the dependencies (ie. the `needs:`), the following command can be utilized to execute, for example the DSMC check-in job: +``` +gitlab-ci-local --needs CHE_DSMC +``` +Another useful option to check the resulting configuration file is +``` +gitlab-ci-local --preview preview.yml +``` +which gives the expanded version of utilized `extends:` and `<<:` templates. + ## Regression Server *Gitlab Runner* Setup In a first step, the required software packages for PICLas and Reggie2.0 are installed on a new system. In a second step, the *gitlab-runner* program is installed and the setup of runner is