odev について
Odoo のアップグレード作業で `odev`(Odoo Development CLI)を使う開発者向けの手順スキルです。データベース操作、テスト、デプロイ、モジュールのバージョン更新に関するコマンド規則を説明します。
主な機能
- 01`odev` コマンドの使用規則
- 02データベース作成と削除の手順
- 03対象を絞ったテスト実行
- 04実行とデプロイの検証
- 05モジュールマニフェストのバージョン管理
活用シーン
- 01アップグレード用 Odoo データベースの作成
- 02モジュールの関連テスト実行
- 03`odev run` または `odev deploy` による変更の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ odoo-ps/ ps-ai-skills --skill odevインストール後、Claude Code で/odevを入力して読み込まれたか確認します。
詳細
ODEV コマンドスキル
このスキルでは、アップグレードタスクで odev(Odoo Development CLI)を使用する方法を説明します。
🛑 必須ルール(ODEV CLI の使用)
-
バージョン指定:データベースを作成するとき(
odev create)は、-V <version>フラグを使用して Odoo のバージョンを明示的に指定する必要があります。odev run、odev shell、odev testなどのほかのコマンドでは、データベースがすでに存在する場合、odevがデータベースからバージョンを自動的に判別するため、-Vフラグは任意です。ただし、データベースとは異なる特定のバージョンを対象とする場合や、データベースが存在しない場合は、-Vの指定が必要です。- 例:
odev run -V 19.0 ...
- 例:
-
引数の順序:
odev固有のフラグ(-V、-f、-c、-w、--venvなど)は、データベース名より前に指定する必要があります。 -
データベースの作成/上書き:すでに存在する可能性があるデータベースを作成する場合は、確認プロンプトを回避するため、必ず
-f(force)フラグを使用する必要があります。既存のデータベースをodev createで「上書き」するには、-fが必須です。- 例:
odev create -f -V 18.0 new_db -i base
- 例:
-
ログレベル:ログを簡潔に保ち、トークンを節約するため、
--log-level=warnを使用してください。このフラグはodevによって処理され、odev自身と Odoo サーバーの両方のログレベルが設定されます。 -
グロブの引用符:
--globを使用する場合は、odevに渡す前にシェルがパターンを展開しないよう、必ずパターンを二重引用符で囲んでください。- 誤り:
odev upgrade-code --glob my_module/**/* - 必須:検証のために
odev runまたはodev deployを使用する場合は、必ず--stop-after-initを指定してください。指定しないと、シェルがハングします。
- 誤り:
-
アドオンのパス:
odevは、指定されたバージョン(-V)に基づいて Odoo と Enterprise のアドオンパスを自動的に管理します。標準の Odoo パス(odoo/addonsやenterpriseなど)を手動で指定してはいけません。これらはodevが内部で処理します。また、odevは対象データベースのリポジトリパスも自動的に追加します。カスタムフォルダーで作業している場合、そのフォルダーがアドオンパスとして検出されれば、odevが追加することもあります。バージョンの不一致を避けるため、パスの管理はodevに任せてください。
主なコマンド
-
odev run <database> [options]:- Odoo サーバーを起動します。
- 手動での確認やテストに役立ちます。
- データベースの存在:データベースが存在している必要があります。存在しない場合はエラーが発生します。
- バージョン指定:
-V <version>を省略すると、odevはデータベースからバージョンを取得します。 - 必須:スクリプトで実行する場合や自動検証を行う場合は、必ず
--stop-after-initを指定してください。 - ベストプラクティス:競合を避けるため、必ず
--http-port <free_port>を指定してください。 - 例:
odev run db -i mod --http-port 8069 --log-level=warn --stop-after-init
-
odev create -V <version> <database> [options]:- 新しいデータベースを作成し、モジュールをインストールします。
- 必須:新しいデータベースを作成するときは、必ず
-V <version>で Odoo のバージョンを指定してください。 - 必須:データベースがすでに存在する場合は、
-fを使用して強制的に作成してください。 - テンプレートデータベースを作成するには
-Tを使用します(例:odev create -f -T -V 17.0 my_template -i sale)。 - テンプレートから複製するには
-t <template>を使用します(例:odev create -f -t my_template -V 17.0 new_db)。
-
odev test <database> -i <modules> [options]:- 対象を絞った検証:個別の修正の検証にはこのコマンドの使用が推奨されますが、実行時間を短く保つため、必ず特定のタグを指定してください。
- 必須:関連する失敗テストのみを実行するため、必ず
-t <tag>または--tags <tag>を指定してください。 - 例:
odev test my_db -i my_module -t .test_some_method - テスト一式の実行は避ける:特定のタグを指定せずに
odev testを実行しないでください。モジュールのテスト一式は実行に時間がかかり、消費するトークンも多くなります。ホストのフレームワークが、セッション終了後にテスト一式を自動実行します。
-
odev venv <database> -c "<command>":- データベースに関連付けられた仮想環境内でコマンドを実行します。
- パッケージのインストール:Python パッケージが不足している場合は、次のコマンドを使用してください。
odev venv <database> -c "pip install <package>"
-
odev shell <database> [options]:- 指定したデータベース用の対話型 Odoo シェルを起動します。
--script "<python_code>"を使用すると、コードを実行してすぐに終了します。- 例:
odev shell my_db --script "print(self.env.user.name)"
-
odev deploy <module_path> [options]:- 実行中の Odoo インスタンスにモジュールをホットデプロイします。
- 例:
odev deploy /custom/my_module
-
odev kill -H <database> [options]:- データベースに関連付けられた実行中の Odoo プロセスを終了します。
- プロセスが応答しない場合は、
-H(強制)を使用して SIGKILL を送信します。 - 例:
odev kill my_db
-
odev delete -f <database> [options]:- 既存のデータベースと、それに関連するリソース(フィルストア、設定)を削除します。
- 必須:確認プロンプトを省略するには、
-f(強制)を使用してください。 - 前提条件:データベースが現在実行中の場合は、先に
odev kill <database>を使用して終了してください。 - 例:
odev delete -f my_db
-
odev upgrade-code <database> --from <ver> --to <ver>:- 一般的な名前変更(例:Odoo 18.0 以降での
<tree>から<list>への変更)に合わせて、ソースコードを自動的に移行します。 - 必須:ディレクトリのパスではなく、対象のデータベース名を指定してください。
- 一般的な名前変更(例:Odoo 18.0 以降での
ベストプラクティス
- 反復作業を高速化する:テンプレートデータベース(
-Tと-t)を使用して、標準の Odoo モジュールを繰り返し再インストールする手間を省きます。 - バージョンを厳密に指定する:データベースの作成時には
-Vフラグを渡してください。それ以外のコマンドでは、データベースのデフォルトとは異なる特定のバージョンを対象にする必要がある場合のみ使用してください。 - プロンプトを省略する:スクリプトや自動タスクでは、対話型プロンプトによって実行が妨げられないよう、必ず
-fを使用してください。
📦 モジュールマニフェストの基準
- バージョン管理:モジュールを新しい Odoo バージョンにアップグレードする際は、
__manifest__.pyのバージョンを必ずODOO_VERSION.1.0.0(例:19.0.1.0.0)にリセットしてください。- 絶対に、アップグレード元の Odoo バージョンのマイナーバージョンやパッチ番号を引き継がないでください(例:
16.3.1.2.3を19.3.1.2.3にしないでください)。 - 最初のアップグレードコミットでは、形式を必ず
<odoo_major>.0.1.0.0にしてください。
- 絶対に、アップグレード元の Odoo バージョンのマイナーバージョンやパッチ番号を引き継がないでください(例: