--- stages: - lint - test - release pre-commit: stage: lint image: adarnimrod/ci-images:pre-commit variables: &variables XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache" PIPENV_VENV_IN_PROJECT: "1" LANG: C.UTF-8 before_script: - apt-get update - apt-get install -y libdbus-1-dev - pipenv install --dev && rm pyproject.toml script: - pipenv run lint cache: &cache key: "$CI_JOB_NAME" paths: - .cache/ - .venv/ test: stage: test image: $project:$version-slim before_script: &before_script - apt-get update - >- apt-get install -y bats build-essential git libdbus-1-dev libffi-dev libglib2.0-dev libssl-dev - |- if [ "$project" = 'pypy' ] then ln -sf /opt/pypy/bin/pypy "/usr/local/bin/python$version" fi - pip install pipenv - pipenv install --dev --python=$version script: - pipenv run bats - pipenv run check - pipenv run doctest - pipenv run build variables: <<: *variables PIPENV_SKIP_LOCK: 1 cache: *cache parallel: matrix: - project: python version: - "2.7" - "3.6" - "3.7" - "3.8" - "3.9" - project: pypy version: - "2.7" - "3.6" - "3.7" upload: stage: release image: python:3.6 before_script: *before_script script: - mv "$pypirc" $HOME/.pypirc - pipenv run build - pipenv run upload variables: *variables cache: *cache rules: - if: $CI_COMMIT_TAG artifacts: paths: - dist/*.whl release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest script: - !!str true rules: - if: $CI_COMMIT_TAG release: name: Release $CI_COMMIT_TAG tag_name: $CI_COMMIT_TAG ref: $CI_COMMIT_TAG description: Release $CI_COMMIT_TAG