Skip to content
dynamistPublic

About

Development environment for Odoo with testing and validation

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

noodle

A disposable local Odoo 20 or 19 server (or a nightly or master build) with sample data and well-known credentials, for developing tools against Odoo (JSON-2, XML-RPC and JSON-RPC clients, odooly scripts, custom Dynamist modules).

The name is a play on nodool, but spelled noodle: if Google can misspell googol, so can we.

Requirements

  • docker, which runs the local k3d cluster
  • mise for the pinned CLI tools (k3d, kubectl, odooly)

Quick Start

mise trust && make tools   # install k3d, kubectl and odooly
make up                    # create the cluster, build and deploy odoo, follow logs

The first start installs the apps with demo data, which takes a few minutes. Odoo is at http://odoo.localhost/odoo and its public website at http://odoo.localhost/, behind the cluster's Traefik ingress.

make down stops Odoo and keeps the data, make reset deletes it.

Odoo Versions

VERSION picks the Odoo to build, one at a time in the same namespace:

VERSION Odoo
20 (default) the official odoo:20.0 image, pinned to a dated build
19 the official odoo:19.0 image, pinned to a dated build
19-nightly, 20-nightly the newest nightly deb of that series from nightly.odoo.com
master the current commit of the odoo/odoo master branch
make reset && make up VERSION=19

The last VERSION built is kept in .k8s/version, a plain make up reuses it. A database only works with the Odoo series that created it: Odoo refuses to start on another one and asks for make reset.

PG picks the PostgreSQL major version next to it, PostgreSQL 17 by default. PG=min picks the oldest version the Odoo series supports, and a version below that is refused before deploying:

make reset && make up VERSION=19 PG=min
make reset && make up PG=18

The last PG is kept in .k8s/postgres. The data only works with the PostgreSQL major version that created it, switching needs make reset as well.

make console    # odooly console logged in as admin with the API key
make test-k8s   # run the smoke, seed data and isolation tests

The k3d cluster dynamist can be shared with other Dynamist dev apps. Each app lives in its own namespace, see Kubernetes Setup.

Credentials

Local development only, the ingress is bound to loopback.

What Value
URL / database http://odoo.localhost / odoo
Admin username / password admin / supersecr3tpassw0rdfordevelop1
Admin API key odoo-supersecr3tapikeyfordevelop1
Master password supersecr3tmasterpassw0rdfordevelop1
Postgres user / password odoo / supersecr3tpassw0rdfordatabase1
Test users password supersecr3tpassw0rdfordevelop1, API key <first name>-supersecr3tapikeyfordevelop1
Odoo demo users demo / demo, portal / portal

See docs/odoo-setup.md for the test users, API examples and configuration.

curl -s http://odoo.localhost/json/2/res.partner/search_read \
  -H "Authorization: bearer odoo-supersecr3tapikeyfordevelop1" \
  -H "X-Odoo-Database: odoo" -H "Content-Type: application/json" \
  -d '{"domain": [["is_company", "=", true]], "fields": ["name"], "limit": 3}'

Make Targets

Target Description
make up Create or reuse the cluster, build and deploy odoo (VERSION=19 for another version), follow the logs until it is ready
make down Stop odoo and postgres, keeping the data
make reset Delete the noodle namespace with all its data
make destroy Delete the whole cluster, with every app in it (FORCE=1 if other apps run)
make logs / make ps Follow odoo logs / show pods, ingress and volumes
make creds Print the credentials of the running odoo
make seed Copy odoo/seed into the pod and re-run seeding (STEPS=users,apikeys, DATASETS=crm to limit)
make upgrade Copy addons/ into the pod and upgrade the changed modules, without a restart
make sample Load the sample datasets through the API with odooly (DATASETS=crm to limit)
make shell / make odoo-shell / make psql bash, Odoo Python shell or psql in the odoo pod
make db-forward Forward PostgreSQL to 127.0.0.1:5432
make console odooly console (ODOOLY_ENV=sales for another odooly.ini section)
make validate / make test-k8s Validate the manifests / run tests/k8s against the deployed odoo
make tools Install the tools pinned in mise.toml

Custom Modules

Put Dynamist modules in addons/ and add them to ODOO_MODULES. They are built into the dynamist/odoo image and installed on the next make up. make upgrade loads changes to them into the running Odoo.

The public website is the noodle_website module, see addons/README.md for how to change it.

License

Apache License 2.0, see LICENSE. Copyright (c) 2026 Dynamist AB.

About

Development environment for Odoo with testing and validation

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages