image: docker.km3net.de/base/python:3 # Change pip's cache directory to be inside the project directory since we can # only cache local items. variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" cache: paths: - .cache/pip key: "$CI_COMMIT_REF_SLUG" stages: - test - coverage - doc - release .virtualenv_template: &virtualenv_definition | python -V python3 -m venv venv source venv/bin/activate pip install -U pip setuptools wheel hash -r pip freeze make install-dev pip freeze .junit_template: &junit_definition artifacts: reports: junit: "reports/junit*.xml" test-py3.6: image: docker.km3net.de/base/python:3.6 stage: test script: - *virtualenv_definition - make test <<: *junit_definition test-py3.7: image: docker.km3net.de/base/python:3.7 stage: test script: - *virtualenv_definition - make test <<: *junit_definition test-py3.8: image: docker.km3net.de/base/python:3.8 stage: test script: - *virtualenv_definition - make test <<: *junit_definition code-style: image: docker.km3net.de/base/python:3.7 stage: test script: - *virtualenv_definition - make black-check allow_failure: true coverage: image: docker.km3net.de/base/python:3.6 stage: coverage script: - *virtualenv_definition - make install-dev - "make test-cov|grep TOTAL| awk '{printf \"COVERAGE: %.2f%%\", (1-$3/$2)*100 }'" coverage: '/COVERAGE:\s*([0-9]*\.[0-9]*%)/' # - make test-cov # coverage: '/TOTAL.+ ([0-9]{1,3}%)/' artifacts: paths: - reports/coverage build-docs: image: docker.km3net.de/base/python:3.6 stage: doc script: - *virtualenv_definition - cd doc && make clean && make html cache: {} pages: image: docker.km3net.de/base/python:3.6 stage: doc script: - *virtualenv_definition - cd doc && make clean && make html - mv _build/html ../public/ - cd .. && mv reports/coverage public/coverage artifacts: paths: - public cache: {} only: - tags - master pypi: image: docker.km3net.de/base/python:3 stage: release cache: {} script: - pip install -U twine wheel - python setup.py sdist - python setup.py bdist_wheel - twine upload dist/* only: - tags cc-lyon: image: docker.km3net.de/base/ci-helper:1 stage: release script: - mkdir -p /root/.ssh && chmod 700 /root/.ssh - ssh-keyscan -H $IN2P3_HOST > ~/.ssh/known_hosts - chmod 600 /root/.ssh/known_hosts - sshpass -p $IN2P3_PASSWORD ssh -v $IN2P3_USERNAME@$IN2P3_HOST 'export KM3NET_THRONG_DIR=/pbs/throng/km3net; export MODULEPATH=/pbs/throng/km3net/modulefiles; . /usr/share/Modules/init/bash; module load km3net_env; module load python/3.7.5; pip install git+https://git.km3net.de/km3py/km3io.git' only: - tags - master allow_failure: true