stages: - test - build - deploy - release # GitLab provides a template to ensure pipelines run only for branches and tags, not for merge requests # This prevents duplicate pipelines in merge requests. # See https://docs.gitlab.com/ee/ci/troubleshooting.html#job-may-allow-multiple-pipelines-to-run-for-a-single-action include: - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml' variables: VERSION: $CI_COMMIT_SHA DEBIAN_FRONTEND: non-interactive PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" test: image: python:slim stage: test cache: paths: - .cache/pip before_script: - pip install tox except: - schedules script: - tox -- --junitxml=test-report.xml --durations=50 lint: image: python:slim cache: paths: - .cache/pip - .cache/pre-commit variables: PRE_COMMIT_HOME: "$CI_PROJECT_DIR/.cache/pre-commit" before_script: - pip install pre-commit # Install git - apt-get update -q -y && apt-get install -q -y --no-install-recommends git except: - schedules script: - pre-commit run -a docker-build: stage: build image: docker:24.0.6 services: - docker:dind variables: DOCKER_DRIVER: overlay2 DOCKER_HOST: tcp://docker:2375/ rules: # Never run on scheduled pipelines - if: '$CI_PIPELINE_SOURCE == "schedule"' when: never # Use commit tag when running on tagged commit - if: $CI_COMMIT_TAG variables: VERSION: $CI_COMMIT_TAG - when: on_success script: - ci/build.sh bump-python-deps: stage: release image: registry.gitlab.teklia.com/infra/devops:latest only: - schedules script: - devops python-deps requirements.txt doc-requirements.txt release-notes: stage: release image: registry.gitlab.teklia.com/infra/devops:latest # Only run on tags only: - tags script: - devops release-notes # Make sure docs still build correctly .docs: image: python:3.10 artifacts: paths: - public before_script: - pip install -e .[docs] script: - mkdocs build --strict --verbose docs-build: extends: .docs stage: build # Test job outside of tags to ensure the docs still can build before merging # Does not use the `pages` name, therefore will be ignored by GitLab Pages except: - tags - schedules pages: extends: .docs stage: deploy only: - master - tags except: - schedules docs-deploy: image: node:18 stage: deploy dependencies: - docs-build before_script: - npm install -g surge except: - master - tags - schedules environment: name: ${CI_COMMIT_REF_SLUG} url: https://${CI_COMMIT_REF_SLUG}-metrics-bio.surge.sh on_stop: docs-stop-surge script: - surge public ${CI_ENVIRONMENT_URL} docs-stop-surge: image: node:18 stage: deploy when: manual # Do not try to checkout the branch if it was deleted variables: GIT_STRATEGY: none except: - master - tags - schedules environment: name: ${CI_COMMIT_REF_SLUG} url: https://${CI_COMMIT_REF_SLUG}-metrics-bio.surge.sh action: stop before_script: - npm install -g surge script: - surge teardown ${CI_ENVIRONMENT_URL}