Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.35 KiB
Newer Older
Johannes Schumann's avatar
Johannes Schumann committed
image: docker.km3net.de/base/python:3
    GIT_SUBMODULE_STRATEGY: recursive

    PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
Johannes Schumann's avatar
Johannes Schumann committed
    DOCKER_HOST: tcp://docker:2375
Johannes Schumann's avatar
Johannes Schumann committed
    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/
  key: "$CI_COMMIT_REF_SLUG"

Johannes Schumann's avatar
Johannes Schumann committed
stages:
reset_test_image:
    stage: reset_cache_image
    cache:
        paths:
            - GiBUU.simg
    script:
        - rm -f GiBUU.simg
.virtualenv_template: &virtualenv_definition |
  python -V
Johannes Schumann's avatar
Johannes Schumann committed
  export SETUPTOOLS_USE_DISTUTILS=stdlib
  pip install virtualenv
  virtualenv venv
  source venv/bin/activate
  pip install -U pip setuptools yapf setuptools_scm

.junit_template: &junit_definition
    artifacts:
      reports:
        junit: "reports/junit*.xml"


    image: python:3.10
    stage: test
    script:
        - *virtualenv_definition
        - make test
    <<: *junit_definition

code-style:
    image: python:3.10
    stage: test
    script:
        - *virtualenv_definition
Johannes Schumann's avatar
Johannes Schumann committed
        - 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


  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
Johannes Schumann's avatar
Johannes Schumann committed
pages:
    image: docker.km3net.de/base/python:3.10
Johannes Schumann's avatar
Johannes Schumann committed
    stage: doc
    script:
        - *virtualenv_definition
Johannes Schumann's avatar
Johannes Schumann committed
        - 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
Johannes Schumann's avatar
Johannes Schumann committed


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