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— новое окружение разворачивается автоматически. - Удобные операции разработчика: удаление и восстановление базы, создание базы с нужным языком и демо-данными, смена пароля администратора, установка и обновление модулей, экспорт переводов, генерация каркаса нового модуля.
- Один состав проекта — три сценария запуска: разработчик, администратор сервера и инженер сборки используют одно описание, меняется только способ упаковки окружения.