Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.73 KiB
Newer Older
Stefan Reck's avatar
Stefan Reck committed
variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
Stefan Reck's avatar
Stefan Reck committed
  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
Stefan Reck's avatar
Stefan Reck committed
  SINGULARITY_RELEASE_IMAGE: orcasong_${CI_COMMIT_TAG}.sif
ViaFerrata's avatar
ViaFerrata committed
stages:
Stefan Reck's avatar
Stefan Reck committed
  - test
  - coverage
ViaFerrata's avatar
ViaFerrata committed
  - doc
Stefan Reck's avatar
Stefan Reck committed
  - docker
ViaFerrata's avatar
ViaFerrata committed
  - release
ViaFerrata's avatar
ViaFerrata committed

Tamas Gal's avatar
Tamas Gal committed

Stefan Reck's avatar
Stefan Reck committed
cache:
  paths:
    - .cache/pip
    - venv/
  key: "$CI_COMMIT_REF_SLUG"


.virtualenv_template: &virtualenv_definition |
  python -V
Stefan Reck's avatar
Stefan Reck committed
  pip install -U pip setuptools wheel virtualenv
Stefan Reck's avatar
Stefan Reck committed
  virtualenv venv
  source venv/bin/activate
Stefan Reck's avatar
Stefan Reck committed
  make install-dev
Stefan Reck's avatar
Stefan Reck committed

test:
    image: docker.km3net.de/base/python:3.6
    stage: test
Tamas Gal's avatar
Tamas Gal committed
    script:
Stefan Reck's avatar
Stefan Reck committed
        - *virtualenv_definition
Stefan Reck's avatar
Stefan Reck committed
        - pip list
Stefan Reck's avatar
Stefan Reck committed
        - 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


Tamas Gal's avatar
Tamas Gal committed
pages:
Stefan Reck's avatar
Stefan Reck committed
    image: docker.km3net.de/base/python:3.6
ViaFerrata's avatar
ViaFerrata committed
    stage: doc
Tamas Gal's avatar
Tamas Gal committed
    script:
Stefan Reck's avatar
Stefan Reck committed
        - *virtualenv_definition
Tamas Gal's avatar
Tamas Gal committed
        - cd docs && make html
        - mv _build/html/ ../public/
Stefan Reck's avatar
Stefan Reck committed
        - cd .. && mv reports/coverage public/coverage
Tamas Gal's avatar
Tamas Gal committed
    artifacts:
        paths:
            - public
Stefan Reck's avatar
Stefan Reck committed
    cache: {}
ViaFerrata's avatar
ViaFerrata committed
    only:
        - tags
        - master
ViaFerrata's avatar
ViaFerrata committed

Stefan Reck's avatar
Stefan Reck committed

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


ViaFerrata's avatar
ViaFerrata committed
pypi:
Stefan Reck's avatar
Stefan Reck committed
  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
Stefan Reck's avatar
Stefan Reck committed


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
Stefan Reck's avatar
Stefan Reck committed
  image: docker.km3net.de/base/singularity:3.1
Stefan Reck's avatar
Stefan Reck committed
  script:
    - singularity --version
Stefan Reck's avatar
Stefan Reck committed
    - singularity build $SINGULARITY_RELEASE_IMAGE Singularity
    - apt-get update -qy
    - apt-get install -qy lftp
Stefan Reck's avatar
Stefan Reck committed
    - 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"
Stefan Reck's avatar
Stefan Reck committed
  tags:
    - docker
  only:
    - tags