# This file is a template, and might need editing before it works on your project. # To contribute improvements to CI/CD templates, please follow the Development guide at: # https://docs.gitlab.com/ee/development/cicd/templates.html # This specific template is located at: # https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Python.gitlab-ci.yml # Official language image. Look for the different tagged releases at: # https://hub.docker.com/r/library/python/tags/ image: python:3.10 variables: HTTP_PROXY: "http://webproxy:8080" HTTPS_PROXY: "http://webproxy:8080" http_proxy: "http://webproxy:8080" https_proxy: "http://webproxy:8080" .install-deps: &install-deps - poetry install before_script: - pip install --upgrade pip virtualenv - virtualenv venv - source venv/bin/activate - pip install --upgrade pip poetry quick-test: rules: - if: $CI_COMMIT_TAG == null script: - poetry install --with test - pytest -m "not webtest" --verbose --cov=zema_emc_annotated --junitxml=junit.xml - coverage xml coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' artifacts: when: always paths: - junit.xml - coverage.xml reports: junit: junit.xml coverage_report: coverage_format: cobertura path: coverage.xml online-test: rules: - if: $CI_COMMIT_TAG == null script: - poetry install --with test - pytest -m webtest --verbose --cov=zema_emc_annotated --junitxml=junit.xml - coverage xml coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' artifacts: when: always paths: - junit.xml - coverage.xml reports: junit: junit.xml coverage_report: coverage_format: cobertura path: coverage.xml mypy: rules: - if: $CI_COMMIT_TAG == null changes: - "**/*.py" script: - poetry install --with lint - mypy . pylint: rules: - if: $CI_COMMIT_TAG == null changes: - "**/*.py" script: - poetry install --with lint - pylint src/zema_emc_annotated flake8: rules: - if: $CI_COMMIT_TAG == null changes: - "**/*.py" script: - poetry install --only lint - flake8 . sphinx: rules: - if: $CI_COMMIT_TAG == null script: - poetry install --with docs - apt update - apt -y install pandoc - sphinx-build -W --keep-going docs/ docs/_build black: rules: - if: $CI_COMMIT_TAG == null changes: - "**/*.py" script: - poetry install --only dev - black --check . release: rules: - if: $CI_COMMIT_TAG == null stage: deploy script: - poetry install --with release - git config --global user.name "Bjoern Ludwig" - git config --global user.email "bjoern.ludwig@ptb.de" - semantic-release --verbosity=DEBUG publish environment: production