# 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.11.4-alpine3.18 # Change pip's cache directory to be inside the project directory since we can # only cache local items. variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" # REGISTRY_USERNAME - secret variable # REGISTRY_PASSWORD - secret variable # REGISTRY_SERVER - secret variable IMAGE_NAME: ${REGISTRY_SERVER}/malves/${CI_PROJECT_NAME} # Pip's cache doesn't store the python packages # https://pip.pypa.io/en/stable/reference/pip_install/#caching # # If you want to also cache the installed packages, you have to install # them in a virtualenv and cache it as well. cache: paths: - .cache/pip - venv/ stages: - test - build .before_script_template: &test before_script: - apk update && apk add py3-virtualenv py3-pip - python3 -V # Print out python version for debugging - pip3 install pipenv - pipenv install --dev test: image: python:${PYVERSION}-bullseye stage: test <<: *test parallel: matrix: - PYVERSION: ["3.8", "3.9", "3.10", "3.11"] script: - pipenv run pytest --version - PYTHONPATH=./tests/ pipenv run coverage run --source halfapi -m pytest - pipenv run coverage xml - pipenv run halfapi --version artifacts: reports: coverage_report: coverage_format: cobertura path: coverage.xml build_pypi: stage: build script: - apk update && apk add py3-virtualenv py3-pip - python3 -V # Print out python version for debugging - pip3 install pipenv - pipenv install --dev - pipenv run python -m build --sdist - pipenv run python -m build --wheel artifacts: paths: - dist/*.whl rules: - if: '$CI_COMMIT_TAG != ""' variables: TAG: $CI_COMMIT_TAG build_container: rules: - if: '$CI_COMMIT_TAG != ""' variables: IMGTAG: $CI_COMMIT_TAG - if: '$CI_COMMIT_REF_NAME == "devel"' variables: IMGTAG: "latest" stage: build image: $CI_REGISTRY/devtools/kaniko script: - echo "Will upload image halfapi:\"$IMGTAG\"" - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - /kaniko/executor --force --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY/malves/halfapi:"$IMGTAG" artifacts: paths: - /kaniko/.docker/config.json