stages: - test - build - deploy lint: image: python:3.10 stage: test cache: paths: - .cache/pre-commit except: - schedules variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" PRE_COMMIT_HOME: "$CI_PROJECT_DIR/.cache/pre-commit" before_script: - pip install pre-commit script: - pre-commit run -a test: image: python:3.10 stage: test cache: paths: - .cache/pip variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" before_script: - pip install tox # Add system deps for opencv - apt-get update -q - apt-get install -q -y libgl1 # Add netrc file - | echo " machine gitlab.teklia.com login gitlab-ci-token password $CI_JOB_TOKEN " > ~/.netrc except: - schedules script: - tox -- -v docker-build: stage: build image: docker:19.03.1 services: - docker:dind variables: DOCKER_DRIVER: overlay2 DOCKER_HOST: tcp://docker:2375/ except: - schedules before_script: # Add netrc file - | echo " machine gitlab.teklia.com login gitlab-ci-token password $CI_JOB_TOKEN " > ~/.netrc script: - ci/build.sh # Make sure docs still build correctly .docs: image: python:3.10 artifacts: paths: - public before_script: # Add netrc file - | echo " machine gitlab.teklia.com login gitlab-ci-token password $CI_JOB_TOKEN " > ~/.netrc - pip install --index-url https://gitlab.teklia.com/api/v4/projects/210/packages/pypi/simple -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: - main - tags except: - schedules docs-deploy: image: node:18 stage: deploy dependencies: - docs-build before_script: - npm install -g surge except: - main - tags - schedules environment: name: ${CI_COMMIT_REF_SLUG} url: https://${CI_COMMIT_REF_SLUG}-teklia-atr-dan.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: - main - tags - schedules environment: name: ${CI_COMMIT_REF_SLUG} url: https://${CI_COMMIT_REF_SLUG}-teklia-atr-dan.surge.sh action: stop before_script: - npm install -g surge script: - surge teardown ${CI_ENVIRONMENT_URL} deploy-pypi: stage: deploy image: python:3.10 only: - tags variables: TWINE_USERNAME: gitlab-ci-token TWINE_PASSWORD: ${CI_JOB_TOKEN} TWINE_REPOSITORY_URL: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi before_script: - pip install twine script: - python setup.py sdist bdist_wheel - twine upload --repository-url ${TWINE_REPOSITORY_URL} dist/* bump-python-deps: stage: deploy image: registry.gitlab.teklia.com/infra/devops:latest variables: PYPI_GITLAB_URL: https://gitlab.teklia.com/api/v4/projects/210/packages only: - schedules script: - devops python-deps requirements.txt doc-requirements.txt release-notes: stage: deploy image: registry.gitlab.teklia.com/infra/devops:latest rules: - if: '$CI_COMMIT_TAG' when: on_success - when: never script: - devops release-notes