Newer
Older
- file: python3-ruff.gitlab-ci.yaml
project: xcg/ci-templates
- file: python-pylint.gitlab-ci.yaml
project: xcg/ci-templates
- file: python-package.gitlab-ci.yaml
project: xcg/ci-templates
- file: docker-build.gitlab-ci.yaml
project: xcg/ci-templates
- file: prettier.gitlab-ci.yaml
project: xcg/ci-templates
- file: yamllint.gitlab-ci.yaml
project: xcg/ci-templates
TEMP_IMAGE_BASENAME: ${CI_REGISTRY_IMAGE}/ci
TEMP_IMAGE: ${CI_REGISTRY_IMAGE}/ci:ci-pipeline-${CI_PIPELINE_ID}
TAG_COMMIT_SHA: "no"

Vincent Hatakeyama
committed
rules:
- if: $CI_COMMIT_TAG == null
needs:
- job: create_package
artifacts: true
variables:
TAG_COMMIT_REF_SLUG: "no"
TAG_BRANCH: "no"
TAG_PIPELINE: "yes"
DOCKER_IMAGE: $TEMP_IMAGE_BASENAME
needs:
- job: build-docker-image
image: $TEMP_IMAGE
variables:
PYLINT_FILES: odoo_scripts doc tests

Vincent Hatakeyama
committed
rules:
- if: $CI_COMMIT_TAG == null
before_script:
# list all non empty optional dependencies
- pip install ".[doc,docker,import_sql,import_base_import]"
- !reference [.pylint, before_script]
mypy:
needs:
- job: build-docker-image
image: $TEMP_IMAGE
script:
- python3 -m pip install mypy types-PyYAML types-psycopg2 types-python-dateutil
types-requests build twine ".[docker]"
rules: !reference [pylint, rules]
prettier:
rules: !reference [pylint, rules]
yamllint:
rules: !reference [pylint, rules]
unittest:
needs: []
stage: test

Vincent Hatakeyama
committed
image: quay.orus.io/xcg/multi-python
36,py37,py38,py39,py310,py311,py312,coverage-report,coverage-xml
artifacts:
when: always
reports:
coverage_report:
coverage_format: cobertura
path: coverage.xml
coverage: "/TOTAL.+ ([0-9]{1,3}%)/"
cache:
paths:
- .cache
variables:
PIP_CACHE_DIR: $CI_PROJECT_DIR/.cache/pip

Vincent Hatakeyama
committed
rules:
- if: $CI_COMMIT_TAG == null
name: quay.orus.io/odoo/odoo:11.0.git20230705.01717dc-20.04.3
- name: postgres:12-alpine
command: ["-c", "fsync=off"]
alias: db
variables:
POSTGRES_USER: odoo
POSTGRES_HOST_AUTH_METHOD: trust
ODOO_ADDONS_PATH: ""
- python3 -m pip show pip setuptools
- python3 -m pip install pip>10
# install current version as this is the one tested, not the one in the image
- python3 -m pip install dist/*.whl
# install modules
- &install_modules $CI_PROJECT_DIR/start --db_host=db -d test_setup
--max-cron-threads=0 --without-demo=all --data-dir $ODOO_DATA_DIR --init base
# restart odoo with installed modules and use it in background
- start --db_host=db -d test_setup --max-cron-threads=0 --data-dir $ODOO_DATA_DIR &
- sleep 3
# then test the setup files
- import_jsonrpc -v --host localhost --password admin -d test_setup --protocol
jsonrpc -p 8069 --directory tests/import
- import_jsonrpc -v --host localhost --password admin -d test_setup --protocol
jsonrpc -p 8069 --file tests/context_import/res.company.csv --context test=value
- import_jsonrpc -v --host localhost --password admin -d test_setup --protocol
jsonrpc -p 8069 --directory tests/import_emptyyaml --delimiter ";"
- import_sql -v --host postgres --user odoo --database test_setup --directory
tests/import_sql
# clean up background process

Vincent Hatakeyama
committed
rules:
- if: $CI_COMMIT_TAG == null
import_jsonrpc_odoo11_test:
extends: import_jsonrpc_odoo11_test-focal
name: quay.orus.io/odoo/odoo:11.0.git20230705.01717dc-18.04.2

Vincent Hatakeyama
committed
before_script:
- export PATH=$HOME/.local/bin:$PATH
- python3 -m pip install pip>10
# specific for 3.6: need pre compiled 3.6 backports-datetime-fromisoformat
- pip install
--index-url=https://gitlab-ci-token:$CI_JOB_TOKEN@orus.io/api/v4/projects/${CI_PROJECT_ID}/packages/pypi/simple
backports-datetime-fromisoformat
# install current version as this is the one tested, not the one in the image
- python3 -m pip install dist/*.whl
# install modules
- *install_modules
import_base_import_odoo11_test:
extends: import_jsonrpc_odoo11_test
script:
# restart odoo with installed modules and use it in background
- start --db_host=db -d test_setup --max-cron-threads=0 --data-dir /var/lib/odoo &
- sleep 3
# then test the setup files
- import_base_import -v --host localhost --password admin -d test_setup --protocol
jsonrpc -p 8069 --directory tests/import
- import_sql -vv --host postgres --user odoo --database test_setup --directory
tests/import_sql
# clean up background process
import_jsonrpc_odoo13_test:
extends: import_jsonrpc_odoo11_test-focal
name: quay.orus.io/odoo/odoo:13.0.git20230608.038354c-2
entrypoint: [""]
variables:
ODOO_TYPE: odoo13
import_jsonrpc_odoo14_test:
extends: import_jsonrpc_odoo11_test-focal
image:
name: quay.orus.io/odoo/odoo:14.0.git20230227.439095d-2
entrypoint: [""]
variables:
ODOO_TYPE: odoo14
extends: import_jsonrpc_odoo11_test-focal
name: quay.orus.io/odoo/odoo:15.0.git20230710.a70cbd5-3
entrypoint: [""]
variables:
ODOO_TYPE: odoo15
name: quay.orus.io/odoo/odoo:16.0.20240826-3
services:
- name: postgres:15-alpine
command: ["-c", "fsync=off"]
alias: db
import_jsonrpc_odoo17_test:
extends: import_jsonrpc_odoo15_test
image:
name: quay.orus.io/odoo/odoo:17.0.git20240411.1a1c5907-1
variables:
ODOO_TYPE: odoo17
# shell tests for colorize/analyse
- ./shell_tests.zsh

Vincent Hatakeyama
committed
rules:
- if: $CI_COMMIT_TAG == null
build-documentation:
# done in test stage to be able to use the built image
stage: test
needs:
artifacts:
paths:
expire_in: 10m
script:
- apk add make
- pip3 install hg-evolve .[doc]
- cd doc
- for language in en fr ; do make LANGUAGE=$language
BUILDDIRSUFFIX=/$CI_COMMIT_HG_BRANCH html ; done
stage: deploy
script:
- mkdir public

Vincent Hatakeyama
committed
- cp -Lr doc/_build/html/fr/$CI_COMMIT_HG_BRANCH public/fr
- cp -Lr doc/_build/html/en/$CI_COMMIT_HG_BRANCH public/en
- |
cat > public/_redirects <<EOF
/ /fr/ 302
EOF
- if: "$CI_COMMIT_HG_TOPIC"
when: never
- if: $CI_COMMIT_HG_BRANCH == "default"
extends: build-docker-image
stage: deploy
needs:
- job: import_jsonrpc_odoo11_test
- job: import_jsonrpc_odoo11_test-focal
- job: import_jsonrpc_odoo13_test
- job: import_base_import_odoo11_test
variables:
TAG_LATEST: branch/default
script:
- DOCKER_BASE_IMAGE_NAME="$TEMP_IMAGE" DOCKER_IMAGE="${CI_REGISTRY_IMAGE}" tag-img
- DOCKER_BASE_IMAGE_NAME="$TEMP_IMAGE" DOCKER_IMAGE="xcgd/odoo_scripts" tag-img
rules: !reference [publish_package, rules]
- job: publish_package
- job: build-docker-image
rules:
- if: $CI_COMMIT_TAG
script:
# Go back just before the tag
- hg up .~1
- towncrier build --version=$CI_COMMIT_TAG --draft > changes
- echo "DESCRIPTION='$(cat changes)'" >> variables.env
artifacts:
reports:
dotenv: variables.env
release_job:
stage: !reference [prepare_job, stage]
image: registry.gitlab.com/gitlab-org/release-cli:latest
needs:
- job: prepare_job
artifacts: true
optional: true
rules: !reference [prepare_job, rules]
variables:
GIT_STRATEGY: none
script:
- echo "running release_job"
release:
tag_name: "$CI_COMMIT_TAG"
ref: "$CI_COMMIT_TAG"
# TODO find a way to automatically add the packages to the release (need a valid generic URL)