Newer
Older
- file: python3-lint-needs.gitlab-ci.yaml
project: xcg/ci-templates
- file: docker-build.gitlab-ci.yaml
project: xcg/ci-templates
- file: deploy-doc.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

Vincent Hatakeyama
committed
HTML_DOC_SOURCES: doc/_build/html
# do not use $TEMP_IMAGE_BASENAME, it will not be correctly replaced by GitLab

Vincent Hatakeyama
committed
TEMP_IMAGE: quay.orus.io/xcgd/odoo_scripts:hg-${CI_COMMIT_HG_SHA}

Vincent Hatakeyama
committed
TAG_COMMIT_SHA: "yes"
pylint:
needs:
- job: build-docker-image
image: $TEMP_IMAGE
variables:
PYLINT_FILES: odoo_scripts doc tests
mypy:
needs:
- job: build-docker-image
image: $TEMP_IMAGE
script:
- python3 -m pip install mypy types-PyYAML types-psycopg2 types-python-dateutil
types-requests
unittest:
needs: []
stage: test
image: fkrull/multi-python
script:
- tox --workdir=.cache/tox --parallel all -e
py36,py37,py38,py39,py310,py311,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
import_jsonrpc_odoo11_test:
stage: test
- 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 modules
- $CI_PROJECT_DIR/start --db_host=db -d test_setup --max-cron-threads=0
--without-demo=all --data-dir /var/lib/odoo --init base --stop-after-init
# install current version as this is the one tested, not the one in the image
- python3 -m pip install --disable-pip-version-check --no-cache-dir --upgrade
$CI_PROJECT_DIR
# restart odoo with installed modules and use it in background
- $CI_PROJECT_DIR/start --db_host=db -d test_setup --max-cron-threads=0 --data-dir
/var/lib/odoo &
- 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
- pkill --echo --full /usr/bin/python3
- pkill --echo --full zsh
import_jsonrpc_odoo11_test-focal:
extends: import_jsonrpc_odoo11_test
image:
name: quay.orus.io/odoo/odoo:11.0-focal
import_base_import_odoo11_test:
extends: import_jsonrpc_odoo11_test
script:
# restart odoo with installed modules and use it in background
- $CI_PROJECT_DIR/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
- pkill --echo --full /usr/bin/python3
- pkill --echo --full zsh
import_jsonrpc_odoo13_test:
extends: import_jsonrpc_odoo11_test
image:
name: quay.orus.io/odoo/odoo:13.0
entrypoint: [""]
variables:
ODOO_TYPE: odoo13
import_jsonrpc_odoo15_test:
extends: import_jsonrpc_odoo11_test
image:
entrypoint: [""]
variables:
ODOO_TYPE: odoo15
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

Vincent Hatakeyama
committed
publish_documentation:
rules:
- if: $CI_COMMIT_BRANCH =~ /^branch\/.*/
publish:
extends: build-docker-image
stage: deploy
needs:
- job: docker_build_copy_test
- job: import_jsonrpc_odoo11_test
- job: import_jsonrpc_odoo11_test-focal
- job: import_jsonrpc_odoo13_test
- job: import_base_import_odoo11_test
- job: unittest
variables:
TAG_LATEST: branch/default
script:
- TAG_COMMIT_SHA="no" DOCKER_BASE_IMAGE_NAME="$TEMP_IMAGE"
DOCKER_IMAGE="xcgd/odoo_scripts" tag-img
publish_package:
stage: deploy
image: python:latest
script:
- pip install build twine
- python3 -m build
- TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python3 -m twine
upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi
dist/*
rules:

Vincent Hatakeyama
committed
- if: $CI_COMMIT_BRANCH =~ /^topic\/.*/ || $CI_COMMIT_BRANCH =~ /^branch\/.*/
when: manual
allow_failure: true

Vincent Hatakeyama
committed
- if: $CI_COMMIT_TAG
release_job:
stage: deploy
image: registry.gitlab.com/gitlab-org/release-cli:latest
needs:
- publish_package
rules:
- if: $CI_COMMIT_TAG
script:
- echo "running release_job"
- export EXTRA_DESCRIPTION="test"
release:
name: "Release $CI_COMMIT_TAG"
description: "Created using the release-cli $EXTRA_DESCRIPTION"
tag_name: "$CI_COMMIT_TAG"
ref: "$CI_COMMIT_TAG"
# TODO find a way to automatically add the packages and changelog to the release