image: docker.km3net.de/base/python:3 variables: GIT_SUBMODULE_STRATEGY: recursive PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 CONTAINER_TEST_IMAGE: docker.km3net.de/simulation/km3buu:$CI_COMMIT_REF_SLUG CONTAINER_RELEASE_IMAGE: docker.km3net.de/simulation/km3buu:$CI_COMMIT_TAG CONTAINER_LATEST_IMAGE: docker.km3net.de/simulation/km3buu:latest SINGULARITY_RELEASE_IMAGE: km3buu_${CI_COMMIT_TAG}.sif cache: paths: - .cache/pip - venv/ - GiBUU.simg key: "$CI_COMMIT_REF_SLUG" stages: - docker - release - test - coverage - reset_cache_image - doc reset_test_image: stage: reset_cache_image cache: paths: - GiBUU.simg script: - rm -f GiBUU.simg only: - tags .virtualenv_template: &virtualenv_definition | python -V export SETUPTOOLS_USE_DISTUTILS=stdlib pip install virtualenv virtualenv venv source venv/bin/activate pip install -U pip setuptools yapf setuptools_scm make install-dev pip list date .junit_template: &junit_definition artifacts: reports: junit: "reports/junit*.xml" test: image: python:3.10 stage: test script: - *virtualenv_definition - make test <<: *junit_definition code-style: image: python:3.10 stage: test script: - *virtualenv_definition - yapf -r -d -e "venv" ./km3buu allow_failure: true coverage: image: python:3.10 stage: coverage script: - *virtualenv_definition - "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 docker: image: docker:stable services: - docker:dind stage: docker script: - docker build --pull -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE tags: - docker only: - tags pages: image: docker.km3net.de/base/python:3.10 stage: doc script: - *virtualenv_definition - cd doc && make clean && cd .. - make doc - mv doc/_build/html public/ - mv reports/coverage public/coverage artifacts: paths: - public cache: {} only: - tags - master - python release-docker: image: docker:stable services: - docker:dind stage: release script: - docker pull $CONTAINER_TEST_IMAGE - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_LATEST_IMAGE - docker push $CONTAINER_RELEASE_IMAGE - docker push $CONTAINER_LATEST_IMAGE tags: - docker only: - tags release-singularity: image: docker.km3net.de/base/singularity:3.6.2 stage: release script: - singularity build $SINGULARITY_RELEASE_IMAGE docker://$CONTAINER_RELEASE_IMAGE - du -sh $SINGULARITY_RELEASE_IMAGE - mkdir -p ~/.ssh && ssh-keyscan -H -t rsa $KM3NET_SFTP_HOST >> ~/.ssh/known_hosts - lftp -u $KM3NET_SFTP_USER,$KM3NET_SFTP_PASSWORD sftp://$KM3NET_SFTP_HOST -e "set ssl:verify-certificate no; cd singularity/; put $SINGULARITY_RELEASE_IMAGE; bye" dependencies: - release-docker only: - tags