Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.39 KiB
Newer Older
Malte Nyhuis's avatar
Malte Nyhuis committed
image: python:3.11
# 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
Malte Nyhuis's avatar
Malte Nyhuis committed

Malte Nyhuis's avatar
Malte Nyhuis committed
.before_script_template: &environment
 before_script:
Malte Nyhuis's avatar
Malte Nyhuis committed
    - apt-get update -y
    # graphics
    - apt-get install libgl1-mesa-glx xvfb -y
    # gmsh
    - apt-get install libglu1-mesa libxcursor1 libxinerama1 -y
    # repository
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
Malte Nyhuis's avatar
Malte Nyhuis committed
cache:
    paths:
        - .cache/pip
        - venv/
        - /var/cache/apt/archives/

Malte Nyhuis's avatar
Malte Nyhuis committed
    <<: *environment
    script:
        - pip install .
Malte Nyhuis's avatar
Malte Nyhuis committed
test: # This job runs in the build stage, which runs first.
    stage: test
Malte Nyhuis's avatar
Malte Nyhuis committed
    <<: *environment
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/.
Malte Nyhuis's avatar
Malte Nyhuis committed
    dependencies:
        - build
Malte Nyhuis's avatar
Malte Nyhuis committed
lint_test: # This job also runs in the test stage.
    stage: quality
Malte Nyhuis's avatar
Malte Nyhuis committed
    <<: *environment    # 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
    dependencies:
        - build
Malte Nyhuis's avatar
Malte Nyhuis committed
jupyter_test:
  stage: quality
Malte Nyhuis's avatar
Malte Nyhuis committed
  <<: *environment
Malte Nyhuis's avatar
Malte Nyhuis committed
  script:
    - apt-get install pandoc -y
    - apt-get install texlive-xetex texlive-fonts-recommended texlive-plain-generic -y
Malte Nyhuis's avatar
Malte Nyhuis committed
    - pip install nbconvert ipykernel
    - pip install . #todo: this should not be necessary
Malte Nyhuis's avatar
Malte Nyhuis committed
    - cd examples
    # Loop through .ipynb files in the examples directory
    - for file in *.ipynb; do echo "Converting $file to PDF..."; jupyter nbconvert --execute "$file" --to pdf; done
Malte Nyhuis's avatar
Malte Nyhuis committed
  dependencies:
    - build
Malte Nyhuis's avatar
Malte Nyhuis committed

coverage_test:
  stage: quality
Malte Nyhuis's avatar
Malte Nyhuis committed
  <<: *environment
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
Malte Nyhuis's avatar
Malte Nyhuis committed
  dependencies:
      - build

Malte Nyhuis's avatar
Malte Nyhuis committed

many's avatar
many committed
docs:
  stage: docs
Malte Nyhuis's avatar
Malte Nyhuis committed
  <<: *environment
  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
many's avatar
many committed
  only:
    - tags
many's avatar
many committed

pages:
  stage: deploy
  <<: *environment
  script:
  - mkdir .public
  - cp -r * .public
  - mv .public public
  artifacts:
    paths:
    - public
many's avatar
many committed
  only:
    - tags
many's avatar
many committed
  dependencies:
      - docs
build-singularity:
    name: quay.io/singularity/singularity:v3.7.0
    entrypoint: [""]
Malte Nyhuis's avatar
Malte Nyhuis committed
    - echo $SYLABSTOKEN
    - singularity remote login --username $SREGISTRY_USERNAME --tokenfile $SYLABSTOKEN
    - singularity build --remote library://nyhuma/ntrflows/ntr.sif:latest singularitybuild/ntrfc_container.def
Malte Nyhuis's avatar
Malte Nyhuis committed
  only:
   - tags
Malte Nyhuis's avatar
Malte Nyhuis committed
publish:
  stage: deploy
Malte Nyhuis's avatar
Malte Nyhuis committed
  <<: *environment
Malte Nyhuis's avatar
Malte Nyhuis committed
  script:
    - pip install twine
    - python setup.py sdist bdist_wheel
    - twine upload --username $PYPI_USERNAME --password $PYPI_PASSWORD --verbose dist/*
  only: