管理Odoo主要升级的CLI工具
项目描述
odoo-openupgrade-wizard
Odoo Openupgrade Wizard是一个工具,帮助开发者进行Odoo社区版(原OpenERP)的重大升级。它使用Openupgrade OCA工具。(https://github.com/oca/openupgrade)
此工具对于复杂的迁移非常有用
- 迁移多个版本
- 利用迁移来安装/卸载模块
- 在每次迁移之间执行 SQL 请求或 Odoo Shell 脚本
- 分析工作负载
它将创建一个迁移环境(包含所有代码),并提供帮助器来运行(并回放)迁移,直到成功为止。
- 要开发并向库贡献,请参阅
DEVELOP.md文件。 - 请参阅
ROADMAP.md文件,以了解当前的限制、错误和待办事项。 - 作者见
CONTRIBUTORS.md文件。
目录
安装
先决条件
- 这些工具在 Debian 系统上运行
- 您应该在系统上安装 Docker
- 某些功能需要额外的包。要使用所有功能,请运行
安装
要安装它,只需运行
pipx install odoo-openupgrade-wizard
(请参阅 DEVELOP.md 文件中的替代安装。)
使用方法
注意:
以下所有命令行中的 odoo-openupgrade-wizard 可以替换为 oow。
命令: init
oow init --initial-version=10.0 --final-version=12.0 --project-name=my-customer-10-12 --extra-repository=OCA/web,OCA/server-tools 初始化一个文件夹,从一个 10.0 和一个 12.0 数据库进行迁移。这将生成以下结构:
filestore/ log/ 2022_03_25__23_12_41__init.log ... postgres_data/ scripts/ step_1__update__10.0/ pre-migration.sql post-migration.py step_2__upgrade__11.0/ ... step_3__upgrade__12.0/ ... step_4__update__12.0/ ... src/ env_10.0/ extra_debian_requirements.txt Dockerfile odoo.conf extra_python_requirements.txt repos.yml src/ env_11.0/ ... env_12.0/ ... config.yml modules.csv -
config.yml是您项目的配置文件。 -
modules.csv文件是一个可选文件。您可以在其中填写您在生产环境中安装的模块列表。此文件的第一个列应包含模块的技术名称。 -
log文件夹将包含odoo-openupgrade-wizard和即将执行的 Odoo 实例的所有日志。 -
filestore文件夹将包含 Odoo 数据库(s)的 filestore。 -
postgres_data文件夹将由 postgres Docker 映像用于存储数据库。 -
scripts文件夹包含每个迁移步骤的文件夹。在每个步骤文件夹中pre-migration.sql可以包含您想在步骤开始之前执行的额外 SQL 查询。post-migration.py可以包含在步骤执行后要执行的额外 Python 命令。脚本将以odoo shell命令执行。所有 ORM 都可通过env变量访问。
-
src文件夹包含每个 Odoo 版本的文件夹。在每个环境文件夹中-
repos.yml列出了运行 Odoo 实例要使用的存储库。语法应遵守gitaggregate命令。(见: https://pypi.ac.cn/project/git-aggregator/)Repo 文件是预先生成的。您可以用自定义设置更新它们(自定义分支、额外 PR、git 浅层选项等...) -
extra_python_requirements.txt列出了运行 Odoo 实例所需的额外 Python 库。语法应遵循pip install -r命令。(参见:https://pip.pypa.org.cn/en/stable/reference/requirements-file-format/) -
extra_debian_requirements.txt列出了运行 Odoo 实例所需的额外系统库。 -
odoo.conf文件。在此处添加您自定义模块所需的额外配置。经典的键(db_host、db_port等)将自动生成。
-
在此步骤中,您应该更改自动生成的文件。如果您有一个非常简单的没有自定义代码、额外存储库或依赖项的 Odoo 实例,可以使用默认文件...
注意
- 在您的
repos.yml文件中,保留openupgrade和server-tools存储库,以便使用所有库的功能。 - 在您的
repos.yml文件中,Odoo 项目应在./src/odoo文件夹中,而 openupgrade 项目应在./src/openupgrade/文件夹中。
命令:pull-submodule
前提条件: init
如果您已经在 github / gitlab 上有一个 repos.yml 文件,同步存储库可能比手动复制粘贴 repos.yml 更方便。
在这种情况下,您可以在 config.yml 文件中的以下部分添加额外的值:
odoo_version_settings: 12.0: repo_url: url_of_the_repo_that_contains_a_repos_yml_file repo_branch: 12.0 repo_file_path: repos.yml 然后运行以下命令:
odoo-openupgrade-wizard pull-submodule 命令:get-code
前提条件: init
odoo-openupgrade-wizard get-code 此命令将简单地获取运行所有迁移步骤所需的 Odoo 代码,使用 gitaggregate 工具。
代码定义在每个环境文件夹的 repos.yml 中。(或如果您使用 pull-submodule 功能,则在 repo_submodule 目录中。)
注意
- 此步骤可能需要很长时间!
可选参数
如果您想更新某些给定版本的代码,可以提供额外的参数:
odoo-openupgrade-wizard get-code --versions 10.0,11.0 命令:docker-build
前提条件: init + get-code
这将构建将在以下步骤中使用的本地 Docker 镜像。
在此步骤执行以下命令应显示每个版本的 Docker 镜像。
$ docker images --filter "reference=odoo-openupgrade-wizard-*" REPOSITORY TAG IMAGE ID CREATED SIZE odoo-openupgrade-wizard-image---my-customer-10-12---12.0 latest ef664c366208 2 weeks ago 1.39GB odoo-openupgrade-wizard-image---my-customer-10-12---11.0 latest 24e283fe4ae4 2 weeks ago 1.16GB odoo-openupgrade-wizard-image---my-customer-10-12---10.0 latest 9d94dce2bd4e 2 weeks ago 924MB 可选参数
- 如果您想为某些给定版本(重新)构建镜像,可以提供额外的参数:
--versions 10.0,12.0
注意
- 此步骤也可能需要很长时间!
命令:run
前提条件: init + get-code + build
odoo-openupgrade-wizard run\ --step 1\ --database DB_NAME 运行具有由步骤参数定义的环境的 Odoo 实例。
如果数据库不存在,则会创建数据库。
如果禁用了 stop-after-init,Odoo 实例将在您的宿主上可用,以下 URL:https://:9069(端口号取决于您的 config.yml 文件中的 host_odoo_xmlrpc_port 设置)
可选参数
-
您可以将
--init-modules=purchase,sale添加以安装模块。 -
您可以将
stop-after-init标志添加到在安装结束时关闭进程。
命令: install-from-csv
前置条件: init + get-code + build
odoo-openupgrade-wizard install-from-csv\ --database DB_NAME 在指定的数据库上安装由您的 modules.csv 文件中定义的模块列表。
如果数据库不存在,则会创建它。
要获取正确的 modules.csv 文件,可以使用以下查询:
psql -c "copy (select name, shortdesc from ir_module_module where state = 'installed' order by 1) to stdout csv" coopiteasy 命令: upgrade
前置条件: init + get-code + build
odoo-openupgrade-wizard upgrade\ --database DB_NAME 根据不同步骤从初始版本升级到最终版本。
对于每个步骤,它将:
- 执行该步骤的
pre-migration.sql。 - 进行“更新所有”操作(在升级或更新上下文中)。
- 执行在
post-migration.py文件中定义的通过 XML-RPC(通过odoorpc)的脚本。
可选参数
-
您可以通过添加
--first-step=2从第二个步骤开始。 -
您可以通过添加
--last-step=3在第三个步骤结束。
命令: generate-module-analysis
前置条件: init + get-code + build
odoo-openupgrade-wizard generate-module-analysis\ --database DB_NAME --step 2 --modules MODULE_LIST 在目标版本(通过步骤参数传递)和前一个版本之间进行分析。它将生成 OpenUpgrade 项目中存在的分析文件.txt。您还可以使用此功能在重构的情况下分析自定义 / OCA 模块在不同版本之间的差异。
命令: estimate-workload
前置条件: init + get-code
odoo-openupgrade-wizard estimate-workload 生成一个名为 analysis.html 的 HTML 文件,其中包含有关迁移所需工作的所有信息。
- 检查模块是否在每个版本中都存在。(通过管理模块的重命名或合并)
- 检查已为 odoo/odoo 中的官方模块执行分析和迁移。
命令: psql
前置条件: init
odoo-openupgrade-wizard psql --database DB_NAME --command "SQL_REQUEST" 在目标数据库上执行 SQL 请求。
可选参数
- 如果没有提供
database,则默认使用postgres数据库。例如:
odoo-openupgrade-wizard psql --command "\l"; 结果:
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ------------+-------+----------+------------+------------+------------------- postgres | odoo | UTF8 | en_US.utf8 | en_US.utf8 | =c/odoo + | | | | | odoo=CTc/odoo template0 | odoo | UTF8 | en_US.utf8 | en_US.utf8 | =c/odoo + | | | | | odoo=CTc/odoo template1 | odoo | UTF8 | en_US.utf8 | en_US.utf8 | =c/odoo + | | | | | odoo=CTc/odoo test_psql | odoo | UTF8 | en_US.utf8 | en_US.utf8 | - 如果执行返回长结果的请求,您可以选择选择
pager或-no-pager选项,通过点击功能echo_via_pager显示结果。(参见: https://click.palletsprojects.com/en/8.1.x/utils/#pager-support)
注意:分页器默认启用。
- 您可以在行内传递额外的 psql 参数。
odoo-openupgrade-wizard psql
--database=test_psql
--command "select id, name from res_partner where name ilike '%admin%';"
-H
结果
<table border="1">
<tr>
<th align="center">id</th>
<th align="center">name</th>
</tr>
<tr valign="top">
<td align="right">3</td>
<td align="left">Administrator</td>
</tr>
</table>
<p>(1 row)<br />
</p>
在此处查看所有选项 https://postgresql.ac.cn/docs/current/app-psql.html
命令: copydb
前提条件: init
odoo-openupgrade-wizard copydb --source DB_NAME --dest NEW_DB_NAME 通过复制现有数据库创建Odoo数据库。
此脚本使用postgres CREATEDB WITH TEMPLATE进行复制。它还会复制文件存储。
命令: dropdb
前提条件: init
odoo-openupgrade-wizard dropdb --database DB_NAME 删除Odoo数据库及其文件存储。
即使DB_NAME不存在,此命令也会成功执行。
命令: dumpdb
前提条件: init
odoo-openupgrade-wizard dumpdb --database DB_NAME --database-path DATABASE_PATH --filestore-path FILESTORE_PATH 将数据库DB_NAME导出到DATABASE_PATH,并将与DB_NAME相关的文件存储导出到FILESTORE_PATH。有关备份文件的格式,请查看--database-format和--filestore-format。
警告: DATABASE_PATH应该是项目路径的子目录,以便PostgreSQL容器能够写入转储文件。例如,项目路径是/path/to/myproject(在此处运行init命令的地方),则DATABASE_PATH可以是/path/to/myproject的任何子目录。
可选参数
-
要选择数据库格式,请使用
--database-format。格式可以是以下之一:-p用于纯SQL文本 -c用于自定义压缩的pg_dump备份 -d用于目录结构 -t用于目录结构的tar版本。另请参阅 https://postgresql.ac.cn/docs/current/app-pgdump.html 默认数据库格式是c。 -
要选择文件存储格式,请使用
--filestore-format。格式可以是以下之一:-d目录结构的副本 -t目录结构的tar版本(未压缩) -tgz使用gzip压缩的目录结构的tar版本。默认文件存储格式是tgz。 -
默认情况下,如果数据库文件或文件存储文件已存在,则命令将失败,保留现有转储。如果您需要覆盖现有文件,则可以使用
--force选项。
项目详细信息
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
odoo_openupgrade_wizard-1.0.1.tar.gz的散列
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 26ccfcd0d66b783e4a7706b7c357e4a7a9610f22b1d769ad57bf173994cf5509 |
|
| MD5 | 6921a8ef864b4499013ba171b5506c18 |
|
| BLAKE2b-256 | 34823e6486c74e98d99d56c1a8ec18bc431717c637fc96cc0aefbe6d351ae1ae |
odoo_openupgrade_wizard-1.0.1-py3-none-any.whl的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 97e4ac4988b24af38041968d9392ecf031dda61d0be55a3403c277c201b8bbd6 |
|
| MD5 | 14fa20d80ab11a87be3f6dbc10024bc8 |
|
| BLAKE2b-256 | 69815549f53ad5fe5efa80a97692c8c8006b4067ec38278731b3861f8b538d35 |