Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.81 KiB
Newer Older
Malte Nyhuis's avatar
Malte Nyhuis committed
image: python:3.10
# Change pip's cache directory to be inside the project directory since we can
# only cache local items.
variables:
Malte Nyhuis's avatar
Malte Nyhuis committed
    PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
Malte Nyhuis's avatar
Malte Nyhuis committed
    LIBGL_ALWAYS_INDIRECT : 0
    SREGISTRY_URL : "https://cloud.sylabs.io/"
    SREGISTRY_USERNAME : nyhuma

# Pip's cache doesn't store the python packages
# https://pip.pypa.io/en/stable/topics/caching/
#
# If you want to also cache the installed packages, you have to install
# them in a virtualenv and cache it as well.
cache:
Malte Nyhuis's avatar
Malte Nyhuis committed
    paths:
        - .cache/pip
        - venv/

.before_script_template: &build_test
 before_script:
Malte Nyhuis's avatar
Malte Nyhuis committed
    - apt-get update -y && apt-get install libgl1-mesa-glx xvfb -y
Malte Nyhuis's avatar
Malte Nyhuis committed
    - python -m pip install --upgrade pip
    - python --version  # For debugging
    - pip install virtualenv
    - virtualenv venv
    - source venv/bin/activate

stages: # List of stages for jobs, and their order of execution
Malte Nyhuis's avatar
Malte Nyhuis committed
    - test
    - quality
    - docs
    <<: *build_test
    script:
        - pip install .
Malte Nyhuis's avatar
Malte Nyhuis committed
test: # This job runs in the build stage, which runs first.
    stage: test
    <<: *build_test
Malte Nyhuis's avatar
Malte Nyhuis committed
    script:
        - pip install .
Malte Nyhuis's avatar
Malte Nyhuis committed
        - pip install -r requirements_dev.txt
Malte Nyhuis's avatar
Malte Nyhuis committed
        - pytest tests/.

lint-test-job: # This job also runs in the test stage.
    stage: quality
    <<: *build_test    # It can run at the same time as unit-test-job (in parallel).
Malte Nyhuis's avatar
Malte Nyhuis committed
    script:
        - pip install flake8
        - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude='venv/'
        - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics   --exclude='venv/'
Malte Nyhuis's avatar
Malte Nyhuis committed
coverage:
  stage: quality
  <<: *build_test
Malte Nyhuis's avatar
Malte Nyhuis committed
  script:
        - pip install .
        - pip install -r requirements_dev.txt
        - python -m  pytest --cov=ntrfc tests
        - coverage xml
  coverage: '/TOTAL.*\s+(\d+\%)/'
  artifacts:
    paths:
      - coverage.xml
    when: always

pages:
  stage: docs
  <<: *build_test
  script:
    - pip install sphinx sphinx-rtd-theme
Malte Nyhuis's avatar
Malte Nyhuis committed
    - cd docs
    - make html
    - mv _build/html/ ../public/
  artifacts:
    paths:
      - public
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
build-singularity:
    name: quay.io/singularity/singularity:v3.7.0
    entrypoint: [""]
  stage: deploy
    - echo $sylabstoken  > SYLABS_TOKEN_FILE
    - singularity remote login --username $SREGISTRY_USERNAME --tokenfile SYLABS_TOKEN_FILE
    - singularity build --remote library://nyhuma/ntrflows/ntr.sif:latest singularitybuild/ntrfc_container.def
  interruptible: true

Malte Nyhuis's avatar
Malte Nyhuis committed
publish:
  stage: deploy
  <<: *build_test
  script:
    - pip install twine
    - python setup.py sdist bdist_wheel
    - twine upload --username $PYPI_USERNAME --password $PYPI_PASSWORD --verbose dist/*
  only:
Malte Nyhuis's avatar
Malte Nyhuis committed
  interruptible: true