跳转到主要内容

Odoo迁移工具

项目描述

🐜🐜🐜 Marabunta 🐜🐜🐜

https://travis-ci.org/camptocamp/marabunta.svg?branch=master

Marabunta 是指军团蚂蚁的迁徙或蚂蚁本身。它们不安分,会吃掉和消化他们道路上的所有东西。

Marabunta 用于提供快速创建 Odoo 更新和轻松运行的一种简单方式。它还允许区分不同的环境,例如提供示例数据。

用法

安装 marabunta 后,它将作为一个控制台命令可用。为了正常运行,它需要一个迁移文件(定义了要更新/执行的更改)以及 odoos 连接参数(在选项部分查看选项)。

在每次运行中,marabunta 都会验证迁移文件中的版本,并处理新的版本。强烈建议配置它,以便在 odoo 启动时自动运行 marabunta。例如,将其添加到您的 docker entrypoint。

特性

  • 备份:Marabunta 允许在迁移之前执行备份命令。

  • 插件升级:Marabunta 能够安装或升级 odoo 插件。

  • 操作:允许在升级模块之前或之后执行命令。

  • 模式:模式允许用户仅在某些环境中执行命令。例如,在开发系统上创建示例数据。

  • 维护页面:在迁移期间发布 HTML 页面。

版本控制系统

目前 Marabunta 允许使用两种不同的版本控制系统:经典的 Major.Minor.Bugfix 和 OdooMajor.OdooMinor.Major.Minor.Bugfix 的五位长版本。尽管第一个 marabunta 版本必须 设置 以进行实例的初始设置。(了解更多关于这个理由见 <https://github.com/camptocamp/marabunta/commit/9b96acaff8e7eecbf82ff592b7bb927b4cd82f02>)

选项

选项

快捷键

环境变量

目的

–migration-file

-f

MARABUNTA_MIGRATION_FILE

迁移的定义文件。

–database

-d

MARABUNTA_DATABASE

要在其上运行迁移的数据库。

–db-user

-u

MARABUNTA_DB_USER

数据库用户。

–db-password

-w

MARABUNTA_DB_PASSWORD

数据库密码。

–db-port

-p

MARABUNTA_DB_PORT

数据库端口(默认为 5432)。

–db-host

-H

MARABUNTA_DB_HOST

数据库主机(默认为 None)。

–mode

MARABUNTA_MODE

marabunta 在不同环境中运行的模式。

–allow-serie

MARABUNTA_ALLOW_SERIE

允许一次升级多个版本。

–force-version

MARABUNTA_FORCE_VERSION

无论什么情况都强制升级到指定版本。

–web-host

MARABUNTA_WEB_HOST

用于维护页面的绑定接口。(默认为 0.0.0.0)

–web-port

MARABUNTA_WEB_PORT

维护页面的端口。(默认为 8069)

–web-custom-html

MARABUNTA_WEB_CUSTOM_HTML

要服务的自定义维护 HTML 页面的路径。

YAML 布局及示例

以下是一个示例迁移文件

migration:
  options:
    # This includes general options which are used everytime marabunta is called.
    # --workers=0 --stop-after-init are automatically added
    install_command: odoo #Command which starts odoo
    install_args: --log-level=debug # additional Arguments
    backup: # Defines how the backup should be done before the migration.
      command: echo "backup command on ${DB_NAME}"
      stop_on_failure: true
      ignore_if: test "${RUNNING_ENV}" != "prod"
  versions:
    - version: setup # Setup is always the initia. version<
      operations:
        pre:  # executed before 'addons'
          - echo 'pre-operation'
        post:  # executed after 'addons'
          - anthem songs::install
      addons:
        upgrade:  # executed as odoo --stop-after-init -i/-u ...
          - base
          - document
      modes:
        prod:
          operations:
            pre:
              - echo 'pre-operation executed only when the mode is prod'
            post:
              - anthem songs::load_production_data
        demo:
          operations:
            post:
              - anthem songs::load_demo_data
          addons:
            upgrade:
              - demo_addon

    - version: 0.0.2
      backup: false
      # nothing to do this can be used to keep marabunta and gittag in sync

    - version: 0.0.3
      operations:
        pre: # we also can execute os commands
          - echo 'foobar'
          - ls
          - bin/script_test.sh
        post:
          - echo 'post-op'

    - version: 0.0.4
      backup: false
      addons:
        upgrade:
          - popeye

运行测试

要运行 marabunta 测试,最好在虚拟环境中进行可编辑安装,然后按照以下方式安装和运行 pytest

$ git clone https://github.com/camptocamp/marabunta.git
Cloning into 'marabunta'...
$ cd marabunta
$ virtualenv -p YOUR_PYTHON env
$ source env/bin/activate
$ pip install '.[test]'
$ py.test tests

发行历史

未发布

特性

错误修复

改进

构建

0.12.0 (2024-01-09)

改进

  • 允许连接到本地数据库服务器而不需要密码(使用 ident)

0.11.0 (2023-09-12)

错误修复

  • 修复构建和发布工作流程

构建

  • 弃用 python 2.7、3.5 和 3.6

  • 支持 python 3.9、3.10 和 3.11

0.10.7 (2022-05-24)

错误修复

  • 修复命令行参数的解析(以及相关环境变量):--db-port--web-port--web-resp-status--web-resp-retry-after

改进

  • 切换到 Psycopg2 二进制轮

构建

  • 测试 Python 3.6、3.7 和 3.8

0.10.6 (2021-09-14)

改进

  • Web 服务器返回状态 503 而不是 200

  • 新增选项 'web-healthcheck-path'

0.10.5 (2020-12-08)

错误修复

  • 如果设置 force_version,则修复备份操作

改进

  • 防止维护页面中的文本弹跳

  • 如果迁移文件中有重复键,则抛出异常

0.10.4 (2019-02-15)

错误修复

  • 当环境变量未定义时修复 BoolEnvDefault

0.10.3 (2019-02-13)

错误修复

  • 如果提供的是 false 值,则 ALLOW_SERIES 不应该是 true。

0.10.2 (2018-12-12)

错误修复

  • 强制升级版本而没有配置备份命令时崩溃

0.10.1 (2018-11-09)

构建

  • 当添加标签时,Travis 会自动将库发布到 Pypi

0.10.0 (2018-11-06)

向后不兼容的更改

  • 在迁移 yaml 文件中,command 和 command_args 选项现在都合并到 command 中

特性

  • 备份命令和备份的 ignore_if 现在在 'sh' shell 中运行,因此我们可以在命令中注入环境变量

  • 备份命令现在可以使用 $database、$db_host、$db_port、$db_user、$db_password,这些将由当前配置值替换

错误修复

  • 当启动 2 个并发 marabunta 进程且第一个失败时,它会释放锁,第二个会启动 odoo,但实际上不会运行迁移。现在,当迁移锁释放时,其他进程也会在运行 odoo 之前重新检查所有版本。

文档

  • 添加一些高级文档

0.9.0 (2018-09-04)

特性

  • 第一个版本始终是“setup”

    在所有项目的用例中,第一个版本始终是设置初始状态。采用 setup 作为第一个版本也使得在项目及其版本增长时将中间版本全部压缩在一起变得更加容易。

  • 支持 5 位版本号

    现在您可以使用 5 位版本号,如 odoo 模块。例如:11.0.3.0.1。这为我们提供了更好的补丁编号,并使 Odoo 世界中的版本控制更加一致。旧 3 位版本号仍支持向后兼容。

上述更改的完整理由在此处可用

https://github.com/camptocamp/marabunta/commit/9b96acaff8e7eecbf82ff592b7bb927b4cd82f02

  • 备份选项

    迁移允许使用 backup 命令在迁移步骤之前执行特定命令(除非明确选择退出)。

    没有提供备份机制,因为您应该运行自己的命令来执行备份。

错误修复

  • 在发布时构建 Py3 轮

0.8.0 (2017-11-16)

Python3!

0.7.3 (2017-11-01)

错误修复

  • 支持特殊字符(如 +)在 Postgres 密码中。密码被错误地通过 unquote_plus 传递,将 + 字符转换为空格。

0.7.2 (2017-09-15)

错误修复

  • 当运行 odoo 时使用 –no-xmlrpc 选项,因为新的 Web 服务器使用相同的端口,实际上也不需要

0.7.1 (2017-09-11)

错误修复

  • 将维护 html 文件包含在发行版中

0.7.0 (2017-09-08)

特性

  • 在迁移期间发布维护 Web 页面。主机和端口可以通过新选项进行配置。默认情况下,端口与 odoo 的(8069)匹配。提供了一个默认的维护页面,但也可以进行配置。

  • 当迁移失败时,日志和跟踪回溯记录在 marabunta_version 表中。

错误修复

  • 包含 Unicode 字符的命令会导致迁移失败

构建

  • 从 tox 中移除了 python3,它不能在 py3 上运行,我们现在也不能让它们运行。Odoo 仍然是 python2,py3 兼容将在它切换时到来。

0.6.3 (2016-12-12)

错误修复

  • 0.6.2 中新打开的连接可能遭受与 0.6.0 之前相同的超时问题:连接是长连接,但没有为此连接提供 keep-alive。为 marabunta_version 中的每个更新打开一个新的连接,这些更新可能位于长时间子进程操作之间。

0.6.2 (2016-12-12)

错误修复

  • 自动提交marabunta_version表中的操作。之前,在发生异常后,marabunta_version的更改被回滚,这不是预期的行为(这会使迁移重启不断)。副作用是,Marabunta现在打开2个连接。用于adsivory锁的连接在结束前无法提交,因为它会释放锁。

0.6.1 (2016-11-25)

重要修复!marabunta_version中的更改从未被提交,所以迁移会再次运行。

错误修复

  • 提交连接,以便更改不会被回滚。

0.6.0 (2016-11-21)

改进

  • 数据库连接的重构

    • 在线程中的游标中打开了咨询锁,这个游标周期性地执行一个假的‘SELECT 1’,以确保在运行长时间运行的后台进程时连接保持活动状态(不会被超时杀死)。

    • 数据库操作是在短生命周期的游标中执行的。这防止了我们在打开的游标锁定‘ir_module_module’时遇到的问题,这阻止了Odoo正确安装/更新。

  • 如果终端不支持颜色,尝试禁用颜色输出。

0.5.1 (2016-10-26)

  • 修复:marabunta进程并发运行,所有尝试都尝试运行迁移,现在使用PostgreSQL咨询锁处理得更好。

0.5.0 (2016-10-12)

Odoo 10 支持

特性

  • 将运行Odoo的默认命令行从odoo.py(在Odoo 10中被重命名)更改为odoo。对于与旧版本一起使用,必须在migration.yml文件中指定install_command

0.4.2 (2016-08-17)

错误修复

  • 通过禁用交互模式来防止当stdout不是tty时发生错误(25, ‘Inappropriate ioctl for device’)。

0.4.1 (2016-07-27)

错误修复

  • 不要在stdout上打印操作结果两次

0.4.0 (2016-07-26)

改进

  • 引入了对pexpect的新依赖。用于创建伪控制台以执行操作。它使子进程中的pdb启用行缓冲和交互性。

修复

  • 空操作确实被视为此类操作

0.3.3 (2016-07-12)

修复

  • 将打印的输出编码到stdout的编码或默认为utf8

0.3.2 (2016-07-08)

修复

  • 当没有版本要处理时发生故障

0.3.1 (2016-07-07)

修复

  • 修复子进程输出的解码问题

0.3.0 (2016-07-06)

引入模式

向后不兼容的更改

  • --demo被更通用的--mode参数取代,等效于--mode=demo

  • MARABUNTA_DEMO被替换为MARABUNTA_MODE

  • 配置文件现在按照“模式”来处理操作和插件,允许加载不同的脚本或为不同的模式安装不同的插件(插件列表合并,模式的操作在主要操作之后执行)

    - version: 0.0.1
      operations:
        pre:  # executed before 'addons'
          - echo 'pre-operation'
        post:  # executed after 'addons'
          - anthem songs::install
      addons:
        upgrade:
          - base
      modes:
        prod:
          operations:
            pre:
              - echo 'pre-operation executed only when the mode is prod'
            post:
              - anthem songs::load_production_data
        demo:
          operations:
            post:
              - anthem songs::load_demo_data
          addons:
            upgrade:
              - demo_addon
  • --force重命名为--allow-serie

  • MARABUNTA_FORCE重命名为MARABUNTA_ALLOW_SERIE

  • --project-file重命名为--migration-file

  • MARABUNTA_PROJECT_FILE重命名为MARABUNTA_MIGRATION_FILE

改进

  • 当使用‘allow_serie’时,如果在多个版本的‘升级’部分中,同一Odoo插件不会升级超过一次

修复

  • 修复数据库中没有db版本时的错误

  • 修复存在未完成的版本时的错误AttributeError: 'bool' object has no attribute 'number'

  • 修复数据库版本高于未处理版本时的错误

0.2.2 (2016-06-23)

改进

  • 修改了README,以便在pypi上以ReST格式呈现。

0.2.1 (2016-06-23)

错误修复

  • 修复了软件包的版本信息和发布日期。

0.2.0 (2016-06-23)

特性

  • 除了2.7之外,还添加了对Python 3.4和3.5的支持。

错误修复

  • 修复了空安装参数的崩溃。

改进

  • 使用YAML safe_load以增加安全性。

文档

  • 启动了Sphinx文档。

构建

  • 切换到tox进行构建。这允许在本地像在travis中一样运行相同的测试。travis配置现在只调用tox。

  • 将运行时依赖项添加到包中,使其与构建和测试依赖项分开(由tox独立安装)。

0.1.1 (2016-06-08)

  • 修复了与打包相关的问题,现在可以从pypi安装marabunta。

0.1.0 (2016-06-08)

首次发布。这对应于Guewen Baconnier的初始工作。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

marabunta-0.12.0.tar.gz (51.7 kB 查看散列)

上传时间

构建分发

marabunta-0.12.0-py2.py3-none-any.whl (39.3 kB 查看散列)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面