Skip to content

Latest commit

Β 

History

History
447 lines (287 loc) Β· 9.5 KB

README.md

File metadata and controls

447 lines (287 loc) Β· 9.5 KB

Odoo Build

Docker pulls .github/workflows/test.yml matrix-badge

This is the Mint System Odoo development environment.

This projects provides a highly opinionated way to manage and develop Odoo. It features:

  • πŸ” Odoo Source: Checkout the Odoo Community and Enterprise Edition and start editing the source code.
  • 🐳 Container Compose: Spin up an Odoo, Postgres, and pgAdmin container and experiment locally.
  • πŸ’» Native: Start an Odoo server directly from the source.
  • πŸ”„ Multiple Versions: With Odoo Build, you can switch between Odoo versions starting from 13.0 up to 18.0.
  • πŸ› οΈ Develop Modules: Scaffold new modules, develop new Odoo features locally.
  • πŸ“₯ Import and Export Database: Use Odoo scripts to copy and restore a customer database to the local environment. Investigate issues and deploy the database with ease.
  • 🀝 Community Repos: The most common community repos are checked out when setting up the project.
  • βœ‚οΈ Customizing Snippets: Create snippets and push them to an Odoo database.
  • πŸ•°οΈ Odoo Revisions: Snapshot the Odoo source at a specific date. See revisions for details.
  • πŸ“¦ Container Image: Build and publish a custom Odoo image. See README for details.
  • πŸ”‘ Credentials: Manage login credentials for Odoo and Nextcloud.
  • ⬆️ Odoo Upgrade: Helper commands to ease the Odoo upgrade process.
  • 🧠 LLM: Prompt LLMs with module code and apply changes.
  • πŸš€ And More: See task help.

Requirements

The Odoo development environment has the following requirements:

Command Completion (Optional)

bash/zsh alias task='./task' with completion.

Nix (Optional)

You can use Nix to setup the requirements.

LLM (Optional)

Install the llm cli to make use of the LLM features.

Usage

The usage section is a set of workflows. See task help or task for details about the project commands.

Clone this repository.

git clone git@github.com:Mint-System/Odoo-Build.git
cd Odoo-Build

When working with Nix, run the nix-shell.

nix-shell

Checkout the Odoo version. Supported versions are: 13.0, 14.0, 15.0, 16.0, 17.0, 18.0

task checkout $VERSION

Install Odoo scripts.

task install-odoo-scripts

Decide wether you want to run Odoo in native mode (from source) or as a container.

Native

Run Odoo from source. Currently supported OS: Ubuntu, Debian, Pop!_OS, Darwin, Windows with Ubuntu on WSL2.

Setup Odoo environment

Sync the submodule branch.

task sync-git-submodule

Setup Python environment

Install the Python and dependencies.

task install-native

Initialize and start Odoo from source

Start database container only.

task start db

Initialize database.

task init-db

Start Odoo from source.

task start native

The browser will be opened automatically.

Create a new module from source

Create a new module.

task create-module addons/project/project_sprint

Add a new model.

task generate-module-model addons/project/project_sprint project.sprint

Add model security.

task generate-module-security addons/project/project_sprint project.sprint

Load modules from thirdparty folder

Clone thirdparty repos into the thirdparty folder.

To load modules from a thirdparty folder, set this env var in your .env file:

ODOO_ADDONS_PATH=thirdparty/odoo-apps-partner-contact,../odoo-cd/untracked-odoo-apps

The paths will be appended to the Odoo config.

Initialize without demo data

In your .env file define this Odoo parameter env var:

ODOO_PARAM="--without-demo=all"

Set Odoo database name

By default the database name is the current branch name.

To define the name, set this env var in your .env file:

ODOO_DATABASE=odoo

Disable browser open

To disable the browser open when starting the Odoo server edit the .env file:

BROWSER_OPEN=false

Container

Run Odoo as container.

Set podman as container engine

If you are using podman, set this .env var:

CONTAINER_ENGINE=podman

Start and initialize Odoo

Set the Odoo addons path in your .env file:

ODOO_ADDONS_PATH=/mnt/addons/,/mnt/oca/,/mnt/enterprise,/mnt/themes/

Run container compose.

task start

Initialize database with the Odoo script.

Use docker-odoo-init help to show all options.

docker-odoo-init -d odoo -i web

Open browser to http://localhost:8069 and login with admin:admin.

Install custom module

docker-odoo-install -m show_db_name

Common

Instructions that are true for container and native usage.

Change log level

To change the log level of Odoo set this env var in your .env file:

LOG_LEVEL=debug

Manage database with container

Open database manager http://localhost:8000/ and login with admin@example.com:admin.

Remove containers

This removes containers and volumes.

task remove

Stop all containers

task stop

Drop database

task drop-db

Define Postgres image version

Define the Postgres image in your .env file:

POSTGRES_IMAGE=postgres:12-alpine

Build and publish container image

Make sure your container setup can build multi-platform images.

To build the container image setup these .env vars:

ODOO_REVISION=16.0.20250207
CONTAINER_REGISTRY=mint-system/

Checkout the Odoo revision.

task checkout-revision

Build the Odoo image.

task build

Publish the Odoo image.

task publish

Setup mail catcher

Start mail server.

task start mail

Setup mail server config for Odoo.

task setup-mail

Troubleshooting

Remove tracked submodule folders

Problem

The checkout command fails tue to unregistered submdoules.

Solution

Remove the submodule with git rm, f.e. git rm oca/dms.

inotify instance limit reached

Problem

While starting the native server this error is thrown:

OSError: [Errno 24] inotify instance limit reached

Or this error:

inotify.calls.InotifyError: Call failed (should not be -1): (-1) ERRNO=(0)

Solution

Increase inotify watch limit.

sudo vi /etc/sysctl.conf
fs.inotify.max_user_watches=524288
fs.inotify.max_user_instances=256
sudo sysctl -p

ImportError libldap

Problem

Instance with auth_ldap does not start.

ImportError: libldap_r-2.4.so.2: cannot open shared object file: No such file or directory

Solution

Reinstall with pip flags.

pip install python-ldap --force-reinstall --no-binary python-ldap

psycopg2 symbol not found

Problem

init-db fails with psycopg2 errors on macOS / Darwin.

Solution

source task source
pip install psycopg2-binary --force

Distribution not found

Problem

After switching the Odoo version with task checkout the task command fail with this error:

pkg_resources.DistributionNotFound: The 'odoo==XX.0' distribution was not found and is required by the application

Solution

The local Odoo package needs to be updated:

source task source
pip install -e odoo 

Import Error lxml

Problem

After install the Pyhton dependencies and running Odoo the following error is thrown:

ImportError: lxml.html.clean module is now a separate project lxml_html_clean.
Install lxml[html_clean] or lxml_html_clean directly.

Solution

Pin the version lxml.

pip install lxml==4.9.3

Attribute Error werkzeug

Problem

After install the Pyhton dependencies and running Odoo the following error is thrown:

Traceback (most recent call last):
  File "/home/janikvonrotz/Odoo-Build/venv17.0/bin/odoo", line 7, in <module>
    exec(compile(f.read(), __file__, 'exec'))
  File "/home/janikvonrotz/Odoo-Build/odoo/setup/odoo", line 5, in <module>
    import odoo
  File "/home/janikvonrotz/Odoo-Build/odoo/odoo/__init__.py", line 119, in <module>
    from . import service
  File "/home/janikvonrotz/Odoo-Build/odoo/odoo/service/__init__.py", line 5, in <module>
    from . import model
  File "/home/janikvonrotz/Odoo-Build/odoo/odoo/service/model.py", line 13, in <module>
    from odoo.http import request
  File "/home/janikvonrotz/Odoo-Build/odoo/odoo/http.py", line 279, in <module>
    if parse_version(werkzeug.__version__) >= parse_version('2.0.2'):
                     ^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'werkzeug' has no attribute '__version__'

Solution

pip install Werkzeug==2.2.2