Перейти к содержанию

CI CI Docker Release packages GitHub release packages

en code AI-assisted AI-assisted docs

odpm (Odoo Developer Project Manager)

Сложность разработки на Odoo проявляется в первую очередь не в синтаксисе Python, а в инфраструктуре: приходится использовать большое количество git репозиториев, согласовывать все которые проистекают из этих репозиториев. Разработчики в команде могут использовать различные ОС (MacOS, Window, Linux) и архитектуры (x86, arm), затем нужно настроить Docker, venv, odoo.conf, IDE, CI и еще кучу слоев закоторыми надо следить.

odpm — это инструмент, который собирает полноценное рабочее место разработчика и одинаковое окружение Odoo для всей команды, в том числе для серверов и ci. Достаточно файла описания проекта odpm.json в репозитории: odpm сам подготовит каталоги, контейнеры, конфигурацию, пути к модулям и типовые операции с базой данных.

Проект изначально создавался, чтобы снизить очень высокий порог входа в разработку на Odoo — в том числе для разработчиков-одиночек и небольших команд, где нет отдельного администратора инфраструктуры.

Какие проблемы решает odpm

Установить Odoo системным пакетом (deb, rpm или даже exe файл) или по инструкции из сети можно, и служба запустится. Но для ежедневной разработки этого недостаточно.

Разработчику нужно «поднять сервер», а полноценное рабочее окружение:

  • каталог, в котором он пишет свой код (например модули для конкретного заказчика или для своей компании);
  • быстрый доступ к настройкам всего окружения — хочется держать весь контекст проекта, со всеми зависимостями и вспомогательными системами в одном месте;
  • понятные способы добавить системные и Python-зависимости внутрь изолированного окружения;
  • файл конфигурации Odoo с правильными путями к дополнениям;
  • исходный код платформы Odoo — для чтения, отладки и обновления модулей;
  • исходники всех подключённых проектов и зависимостей (OCA, корпоративные репозитории, модули в файловой системе);
  • согласованные пути к каталогам дополнений и к собственной кодовой базе.
  • прописать информацию обо всех путях где лежит код в отладчик
  • а так же иметь возможность быстро и удобно совершать кучу других манипуляций

Собрать это вручную системно трудно даже на одной машине. А если еще добавить Docker который должен решать проблемы совместимости между OC и архитектур, чтобы у всех было одинаково, появляется второй слой сложности: что куда подключать с диска, права пользователя, пути внутри контейнера и снаружи, совпадение путей в конфигурации с реальной файловой системой. На этом этапе чаще всего и возникают ошибки «у коллеги работает, у меня модуль не находится».

odpm - берёт на себя эту сборку: один каталог проекта на вашем компьютере, один файл odpm.json в git-репозитории модуля и вы получаете автоматическое клонирование репозиториев, генерацию docker-compose, конфигурацию Odoo и возможность разворачивать БД из архива и сразу автоматически устанавливать модули, сразу настроенный отладчик в редакторе.

Полная статья (10 слоёв проблем, роли программы, альтернативы и границы): Зачем odpm.

Краткий вход для новичков: Дружелюбность к новичкам.

Быстрый старт

На компьютере должны быть установлены Docker, git и odpm (см. установку).

mkdir odoo_demo_project-20 && cd odoo_demo_project-20
odpm --init https://github.com/aayartsev/odoo_demo_project.git --branch 20.0 --odoo-bin --stop-after-init

При первом запуске мастер настройки задаст вопросы о каталогах и сценарии использования; на незнакомые пункты можно отвечать клавишей Enter.

После подготовки окружения: Добавьте флаг, чтобы при создании базы, автоматически устанавливались демо данные. Это нужно для того, чтобы модуль установил демо записи, которые уже будут в интерфейса. Делается это так: - Находите файл user_settings.json - и прописываете параметр "create_demo": true

odpm -d test_db -i first_module

Откройте в браузере: http://127.0.0.1:8069.

Пошаговое описание: Локальная разработка с нуля.

Установка odpm

Установка odpm (все платформы).

Сценарии использования

Сценарий задаётся переменной ODPM_SCENARIO в файле .env. Один и тот же odpm.json; меняется способ запуска (отладка, безопасность, сборка образа).

Значение Для кого и зачем
developer Разработчик на своём компьютере: отладка в IDE, профиль безопасности почти без ограничений, все пароли дефолтные
server Виртуальная машина или сервер заказчика, по умолчанию применяется строгий профиль безопсности
ci Сборка готового образа для конвейера непрерывной интеграции

Статьи: разработка · сервер · непрерывная интеграция · масштабирование команды.

Полная документация

Опубликованный сайт: https://aayartsev.github.io/odpm/ (RU) · English (EN). Полный перечень статей — в меню навигации слева.

Тема Ссылка
Подключение чужого или унаследованного проекта legacy-project.md
Роль координатора в команде team-coordinator.md
Свой форк платформы Odoo platform-fork.md
Ссылки на репозитории (git, https, file) git-links.md
Все параметры командной строки cli.md
Состояние PostgreSQL, drift, legacy adoption database-state.md
Маркер деплоя модулей (modules diff) deploy-marker.md
Рецепты (odpm run) recipes.md
Файлы .env, odpm.json, odoo.conf справочник
Безопасность на сервере security.md

Разработчикам самого odpm

Участие в разработке инструмента, тесты, переводы интерфейса: contributing/.

Цели проекта в целом

  • Независимость от операционной системы и, по возможности, от архитектуры процессора (в том числе Apple Silicon через Docker).
  • Передача описания проекта через odpm.json — новое окружение разворачивается автоматически.
  • Удобные операции разработчика: удаление и восстановление базы, создание базы с нужным языком и демо-данными, смена пароля администратора, установка и обновление модулей, экспорт переводов, генерация каркаса нового модуля.
  • Один состав проекта — три сценария запуска: разработчик, администратор сервера и инженер сборки используют одно описание, меняется только способ упаковки окружения.