variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 CONTAINER_TEST_IMAGE: docker.km3net.de/test/orcasong:$CI_COMMIT_REF_SLUG CONTAINER_RELEASE_IMAGE: docker.km3net.de/orcasong:$CI_COMMIT_TAG CONTAINER_LATEST_IMAGE: docker.km3net.de/orcasong:latest SINGULARITY_RELEASE_IMAGE: orcasong_${CI_COMMIT_TAG}.sif stages: - test - coverage - doc - docker - release - singularity cache: paths: - .cache/pip - venv/ key: "$CI_COMMIT_REF_SLUG" .virtualenv_template: &virtualenv_definition | python -V pip install -U pip setuptools wheel virtualenv virtualenv venv source venv/bin/activate make install-dev test: image: docker.km3net.de/base/python:3.6 stage: test script: - *virtualenv_definition - pip list - make test coverage: image: docker.km3net.de/base/python:3.6 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]*%)/' artifacts: paths: - reports/coverage pages: image: docker.km3net.de/base/python:3.6 stage: doc script: - *virtualenv_definition - cd docs && make html - mv _build/html/ ../public/ - cd .. && mv reports/coverage public/coverage artifacts: paths: - public cache: {} only: - tags - master 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 pypi: image: docker.km3net.de/base/python:3.6 stage: release cache: {} script: - pip install -U twine - python setup.py sdist - twine upload dist/* only: - tags release-image: 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 singularity: image: docker.km3net.de/base/singularity:3.1 stage: singularity script: - singularity --version - singularity build $SINGULARITY_RELEASE_IMAGE Singularity - apt-get update -qy - apt-get install -qy lftp - lftp -u $KM3NET_SFTP_USER,$KM3NET_SFTP_PASSWORD sftp://$KM3NET_SFTP_HOST -e "set sftp:auto-confirm yes; set ssl:verify-certificate no; cd singularity/; put $SINGULARITY_RELEASE_IMAGE; bye" tags: - docker only: - tags