odoo-openupgrade-wizard/.gitlab-ci.yml
Rémy Taymans d286f868ef Change for lighter ci images
Default python images are based on debian and are heavy (~1Go).

Using alpine version for smaller images (~100Mo).

This will save space on the runner and allow more container to be run at
same time.
2024-04-12 12:50:09 +02:00

133 lines
3.4 KiB
YAML

stages:
- lint
- test
- build
- publish
- release
pre-commit:
image: python:alpine
stage: lint
rules:
# Run only if merge request
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# Run if commit on default branch
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
before_script:
- apk add git
- pip install pre-commit
script:
- pre-commit run --all --show-diff-on-failure --verbose --color always
check_version:
stage: lint
image: python:alpine
rules:
# Run if commit that start with a version number is pushed
- if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+.*/
before_script:
- pip install poetry
- poetry --version
script:
# Ensure tag is the same as the program version
- test $(poetry version --short) = $CI_COMMIT_TAG
check_changelog:
stage: lint
image: python:alpine
rules:
# Run if commit that start with a version number is pushed
- if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/
before_script:
- pip install poetry
- poetry --version
script:
# Ensure change log is completed correctly
- cat CHANGES.rst | grep $CI_COMMIT_TAG
pytest:
image:
name: python:$PYTHON_VERSION-alpine
stage: test
tags:
- cie-oow-dind-runner
rules:
# Run if merge request
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# Run if commit on default branch
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
services:
- name: docker:dind
alias: dind
variables:
ODOO_RPC_URL: dind
DOCKER_HOST: tcp://dind:2375/
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+)\%/'
before_script:
- apk add git
- pip install poetry
- export PATH="$HOME/.local/bin:$PATH"
- poetry install --all-extras
script:
- poetry run pytest -vv -x --cov=odoo_openupgrade_wizard
parallel:
matrix:
- PYTHON_VERSION:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
build:
stage: build
image: python:alpine
rules:
# Run if merge request
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# Run if commit on default branch
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
# Run if commit that start with a version number is pushed
- if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+.*/
before_script:
- pip install poetry
- poetry --version
script:
- poetry build
artifacts:
untracked: true
paths:
- dist/
publish:
stage: publish
image: python:alpine
rules:
# Run if commit that start with a version number is pushed
- if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+.*/
before_script:
- pip install poetry
- poetry --version
- ls -l dist
# Uncomment for testing build publication on test.pypi.org
#- poetry config repo.pypitest https://test.pypi.org/legacy/
script:
- poetry publish --skip-existing --username $PYPI_USER --password $PYPI_TOKEN
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
# Run only for a patch, minor or major release
# This avoid creating a release for alpha, beta, or other special
# releases
- if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/
script:
- echo "running release_job for $CI_COMMIT_TAG"
release:
name: "$CI_COMMIT_TAG"
description: "Change log here: ${CI_PROJECT_URL}/-/blob/main/CHANGES.rst"
tag_name: "$CI_COMMIT_TAG"
ref: "$CI_COMMIT_SHA"