mcpField
O
odev

odev

github.com/odoo-ps开发544 次安装7 周前更新
代码仓库

关于 odev

供开发者在 Odoo 升级工作中使用 `odev`(Odoo Development CLI)的指引技能,说明数据库操作、测试、部署和模块版本更新的命令规则与注意事项。

主要功能

  1. 01`odev` 命令使用规则
  2. 02数据库创建与清理指南
  3. 03定向运行测试
  4. 04运行与部署验证
  5. 05模块清单版本管理

适用场景

  1. 01为升级创建 Odoo 数据库
  2. 02针对模块运行特定测试
  3. 03用 `odev run` 或 `odev deploy` 验证更改

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/odoo-ps/ps-ai-skills --skill odev

安装后在 Claude Code 中输入/odev确认已加载。

详细介绍

ODEV Commands Skill

此 Skill 提供升级任务期间使用 odev(Odoo Development CLI)的说明。

🛑 强制规则(ODEV CLI 用法)

  1. 版本:创建数据库(odev create)时,必须使用 -V <version> 标志明确指定 Odoo 版本。对于 odev run、odev shell 或 odev test 等其他命令,如果数据库已存在,-V 标志为可选项,因为 odev 会自动从数据库推断版本。但如果目标版本与数据库版本不同,或数据库不存在,则必须指定 -V。

    • 示例:odev run -V 19.0 ...
  2. 参数顺序:odev 专用标志(如 -V、-f、-c、-w、--venv)必须放在数据库名称之前。

  3. 创建/覆盖数据库:创建可能已存在的数据库时,必须始终使用 -f(force)标志,以跳过确认提示。通过 odev create“覆盖”现有数据库时,必须使用 -f。

    • 示例:odev create -f -V 18.0 new_db -i base
  4. 日志级别:使用 --log-level=warn,以精简日志并节省 Token。请注意,odev 会使用此标志同时设置自身和 Odoo 服务端的日志级别。

  5. Glob 引号:使用 --glob 时,必须始终用双引号括住模式,防止 Shell 在模式传递给 odev 之前展开它。

    • 错误示例:odev upgrade-code --glob my_module/**/*
    • 强制要求:使用 odev run 或 odev deploy 进行验证时,必须始终包含 --stop-after-init。否则 Shell 会一直挂起。
  6. 附加模块路径: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 shell。
    • 使用 --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>)。
    • 必须遵守:必须指定目标数据库名称,而非目录路径。

最佳实践

  • 加快迭代:使用模板数据库(-T 和 -t),避免反复重新安装标准 Odoo 模块。
  • 严格管理版本:创建数据库时传入 -V 标志。对于其他命令,只有在需要指定不同于数据库默认版本的版本时才使用它。
  • 跳过提示:在脚本或自动化任务中始终使用 -f,确保执行不会因交互式提示而受阻。

📦 模块清单规范

  1. 版本号:将模块升级到新的 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。

评论

支持 Markdown