stages: - pretest - test - nightly - docs - deploy # -------------------------- Templates ------------------------------------------------------------------------------------ # Base configuration for jobs meant to run at every commit .every-commit: rules: - if: $CI_PIPELINE_SOURCE != "schedule" # Configuration for jobs meant to run on each commit to pycodegen/pystencils/master .every-commit-master: rules: - if: '$CI_PIPELINE_SOURCE != "schedule" && $CI_PROJECT_PATH == "pycodegen/lbmpy" && $CI_COMMIT_BRANCH == "master"' # Base configuration for jobs meant to run at a schedule .scheduled: rules: - if: $CI_PIPELINE_SOURCE == "schedule" # -------------------------- Pre Tests -------------------------------------------------------------------------------- # Normal test - runs on every commit all but "long run" tests tests-and-coverage: stage: pretest extends: .every-commit image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full:cupy12.3 script: # - pip install sympy --upgrade - export NUM_CORES=$(nproc --all) - mkdir -p ~/.config/matplotlib - echo "backend:template" > ~/.config/matplotlib/matplotlibrc - mkdir public - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils - env - pip list - py.test -v -n $NUM_CORES --cov-report html --cov-report xml --cov-report term --cov=. -m "not longrun" --junitxml=report.xml - python3 -m coverage xml tags: - docker - cuda11 - AVX coverage: /Total coverage:\s\d+.\d+\%/ artifacts: when: always paths: - coverage_report reports: coverage_report: coverage_format: cobertura path: coverage.xml junit: report.xml # Normal test with longruns tests-and-coverage-with-longrun: stage: test when: manual allow_failure: true image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full script: # - pip install sympy --upgrade - export NUM_CORES=$(nproc --all) - mkdir -p ~/.config/matplotlib - echo "backend:template" > ~/.config/matplotlib/matplotlibrc - mkdir public - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils - env - pip list - py.test -v -n $NUM_CORES tags: - docker - cuda11 - AVX minimal-conda: stage: pretest extends: .every-commit image: i10git.cs.fau.de:5005/pycodegen/pycodegen/minimal_conda script: - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils - pip install -e . - python quicktest.py tags: - docker # Linter for code formatting flake8-lint: stage: pretest extends: .every-commit image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full script: - flake8 src/lbmpy tags: - docker - cuda11 # -------------------------- Tests ------------------------------------------------------------------------------------- # pipeline with latest python version latest-python: stage: test extends: .every-commit image: i10git.cs.fau.de:5005/pycodegen/pycodegen/latest_python before_script: - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils script: - env - pip list - export NUM_CORES=$(nproc --all) - mkdir -p ~/.config/matplotlib - echo "backend:template" > ~/.config/matplotlib/matplotlibrc - mkdir public - py.test -v -n $NUM_CORES -m "not longrun" --junitxml=report.xml tags: - docker - AVX artifacts: when: always reports: junit: report.xml # Minimal tests in windows environment #minimal-windows: # stage: test # except: # variables: # - $ENABLE_NIGHTLY_BUILDS # tags: # - win # script: # - export NUM_CORES=$(nproc --all) # - export MPLBACKEND=Agg # - source /cygdrive/c/Users/build/Miniconda3/Scripts/activate # - source activate pystencils # - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils # - python -c "import numpy" # - pip install sympy==1.9 # - py.test -v -m "not (notebook or longrun)" minimal-sympy-master: stage: test extends: .every-commit image: i10git.cs.fau.de:5005/pycodegen/pycodegen/minimal_conda before_script: - pip install -e . script: - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils - python -m pip install --upgrade git+https://github.com/sympy/sympy.git - pip list - python quicktest.py allow_failure: true tags: - docker - cuda ubuntu: stage: test extends: .every-commit image: i10git.cs.fau.de:5005/pycodegen/pycodegen/ubuntu before_script: # - apt-get -y remove python3-sympy - ln -s /usr/include/locale.h /usr/include/xlocale.h # - pip3 install `grep -Eo 'sympy[>=]+[0-9\.]+' setup.py | sed 's/>/=/g'` - pip3 install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils script: - export NUM_CORES=$(nproc --all) - mkdir -p ~/.config/matplotlib - echo "backend:template" > ~/.config/matplotlib/matplotlibrc - env - pip3 list - pytest -v -n $NUM_CORES -m "not longrun" --junitxml=report.xml tags: - docker - cuda11 artifacts: when: always reports: junit: report.xml pycodegen-integration: image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full stage: test when: manual allow_failure: true script: - env - pip list - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pycodegen.git - cd pycodegen - git submodule sync --recursive - git submodule update --init --recursive - git submodule foreach git fetch origin # compare the latest master version! - git submodule foreach git reset --hard origin/master - cd lbmpy - git remote add test $CI_REPOSITORY_URL - git fetch test - git reset --hard $CI_COMMIT_SHA - cd .. - pip install -e pystencils/ - pip install -e lbmpy/ - ./install_walberla.sh # build all integration tests - cd walberla/build/ - make -j $NUM_CORES MicroBenchmarkGpuLbm LbCodeGenerationExample - cd apps/benchmarks/UniformGridGPU - make -j $NUM_CORES - cd ../UniformGridCPU - make -j $NUM_CORES tags: - docker - cuda11 - AVX # -------------------- Scheduled Tasks -------------------------------------------------------------------------- nightly-sympy: stage: nightly extends: .scheduled image: i10git.cs.fau.de:5005/pycodegen/pycodegen/latest_python before_script: - pip install -e . - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils - pip install --upgrade --pre sympy script: - env - pip list - export NUM_CORES=$(nproc --all) - mkdir -p ~/.config/matplotlib - echo "backend:template" > ~/.config/matplotlib/matplotlibrc - mkdir public - pytest -v -n $NUM_CORES -m "not longrun" --junitxml=report.xml tags: - docker - AVX - cuda artifacts: when: always reports: junit: report.xml # -------------------- Documentation and deploy ------------------------------------------------------------------------ build-documentation: stage: docs needs: [] extends: .every-commit image: i10git.cs.fau.de:5005/pycodegen/pycodegen/documentation before_script: - pip install -e . script: - export PYTHONPATH=`pwd` - pip install git+https://gitlab-ci-token:${CI_JOB_TOKEN}@i10git.cs.fau.de/pycodegen/pystencils.git@master#egg=pystencils - mkdir html_doc - sphinx-build -W -b html doc html_doc tags: - docker - cuda11 artifacts: paths: - html_doc pages: image: i10git.cs.fau.de:5005/pycodegen/pycodegen/full extends: .every-commit-master stage: deploy needs: ["tests-and-coverage", "build-documentation"] script: - ls -l - mv coverage_report html_doc - mv html_doc public # folder has to be named "public" for gitlab to publish it artifacts: paths: - public tags: - docker