分公司

通过 分支 视图,可以概览版本库中的不同分支。

阶段

Odoo.sh 提供三种不同的分支阶段:

您可以通过拖放操作,将分支移动到目标阶段标题下,以更改其所属阶段。

更改分支阶段示意图

注解

  • 开发分支可以移动到 预发布。若尝试将开发分支直接移至 正式运行,系统将显示警告,提示每个项目只能有一个正式运行分支。

  • 预发布分支可以移回 开发,但无法直接移至 正式运行

  • 正式运行分支仅可移回 开发。若尝试将其移至 预发布,则只能执行合并操作。此过程的详细说明请参阅 合并 章节。

生产

正式运行分支包含用于运行数据库的代码。每个项目有且仅能有一个正式运行分支。

当您向此分支推送新的提交时,正式运行服务器将使用修订后的代码更新并重启。

如果变更需要更新模块(例如修改表单视图),并且您希望自动执行此更新,则可以在模块的清单文件(:file:__manifest__.py)中增加模块版本号。平台随后将执行更新,在此期间,实例将因维护原因暂时不可用。

此方法等同于通过 应用 菜单或 命令行 中的 -u 参数来升级模块。

注解

  • 如果所做的更改导致服务器无法重启,或模块更新失败,服务器将自动回退到上一个成功的代码版本,数据库也会恢复到之前的状态。您可以访问更新失败的日志,以便排查问题。

  • 演示数据不会被加载,因为它不适用于正式运行数据库。同时,不会执行`单元测试 <https://en.wikipedia.org/wiki/Unit_testing>`_,以避免在更新期间延长正式运行数据库的不可用时间。

Odoo.sh 会自动备份正式运行数据库。它保留7份每日备份、4份每周备份和3份每月备份。每次备份都包括数据库转储、文件存储(附件和二进制字段)、日志和会话。

警告

对于**试用项目**,在 30天 后,正式运行分支和所有预发布分支将自动被重置回开发阶段。

预发布

预发布分支旨在使用正式运行数据测试新功能,同时避免测试记录污染实际的正式运行数据库。它们会创建正式运行数据库的中和化副本。

中和化过程会禁用以下功能:

  • 计划操作

    注解

    如需测试,请手动触发或重新启用它们。请注意,为了节省资源,当无人使用数据库时,平台会减少其触发频率。

  • 外发邮件

    注解

    它们会通过邮件捕获器被拦截。您的 Odoo.sh 项目中提供了 查看数据库所发送邮件的界面。这样,就不会有邮件发送给您的联系人。

  • IAP 服务

  • 支付服务商和物流连接器

    注解

    它们将被置于测试模式。

如果您在预发布数据库中配置或查看变更,请务必记录它们(逐步记录笔记、在正式环境中重现等),或直接通过 XML 数据文件在分支的模块中编写这些变更,以覆盖默认配置或视图。请查阅 首个模块文档 查看示例。

注解

单元测试不会执行。因为它们依赖于演示数据,而这些数据不会加载到正式运行和预发布数据库中。如果 Odoo 开始支持在没有演示数据的情况下运行单元测试,Odoo.sh 届时将考虑在预发布数据库上运行测试。

测试数据库不支持自动备份。不过您可将正式运行数据库的备份恢复至测试分支,用于功能测试,或是手动找回从正式运行数据库中意外删除的数据。同时,测试数据库也支持手动创建备份。

警告

测试分支所创建的数据库,有效期最长为三个月。期满后,系统可能在不提前通知的情况下自动冻结该数据库。若需重新使用此特定分支,您只能通过重建分支的方式实现。

开发

开发分支会使用演示数据创建新数据库,以运行单元测试。安装的模块是分支中包含的那些。您可以在 :doc:`项目设置 <settings>`中更改要安装的模块列表。

当向开发分支推送提交时,会启动一个新服务器,并从头创建一个数据库,同时更新该分支。默认会加载演示数据并执行单元测试,以验证更改不会破坏任何正在测试的功能。您可以禁用测试,或通过前往 分支设置 配置允许运行带有特定标签的测试。

与预发布分支类似,邮件不会被发送,而是由邮件捕获器拦截;并且只要数据库未被使用,计划操作也不会触发。

开发数据库不会自动备份,也无法手动备份。

警告

为开发分支创建的数据库预计保留约三天。之后,它们可能会在不另行通知的情况下被自动垃圾回收,以便为新数据库腾出空间。

合并分支

您可以通过拖放操作将分支相互合并。

将分支相互合并

若想用正式运行数据测试开发分支的更改,您可以:

  • 将开发分支拖放到所需的分支上,将其合并到预发布分支中;或

    将开发分支合并到预发布分支
  • 将开发分支拖放到 预发布 部分,使其成为预发布分支。

    将开发分支移到预发布分支下

当更改准备好上线时,将预发布分支拖放到正式运行分支上以合并并部署它们。

注解

  • 您也可以直接将开发分支合并到正式运行分支。但是,由于没有通过预发布分支使用正式运行数据进行验证,因此在正式运行数据库中出现问题的风险更高。

  • 开发分支可以相互合并,预发布分支也可以相互合并。

  • 您也可以直接在工作站上使用 git merge 命令来合并分支。当有新修订推送到您的分支时,Odoo.sh 会收到通知。

将预发布分支合并到正式运行分支仅会合并源代码。对预发布数据库所做的任何更改都不会传递到正式运行数据库。但是,如果您修改了代码仓库中的代码,则在合并时它会传递到正式运行分支。

如果您在预发布分支中测试了配置更改,并希望将其应用到正式运行分支,则必须采用以下方式之一:

  • 将配置更改写入 XML 数据文件,以覆盖分支中的默认配置或视图,然后在模块的清单文件(__manifest__.py)中增加模块版本号,以便在将预发布分支合并到正式运行分支时触发模块更新。

    注解

    推荐使用此方法,因为它能提高开发的可扩展性。您将为所有配置更改使用 Git 版本控制功能,从而确保更改的可追溯性。

  • 通过复制和粘贴,手动将更改从预发布数据库应用到正式运行数据库。

页卡

历史

历史 选项卡提供了分支历史的概览:

  • 提交信息及其作者

  • 与平台相关的各种事件,例如阶段更改、数据库导入和备份恢复

分支的历史选项卡示意图

每个事件的右上角会显示一个状态,指示数据库上当前的操作(例如,安装、更新、备份导入)或其结果(例如,测试反馈、成功的备份导入)。如果操作成功,会出现一个:guilabel:连接 按钮,允许您访问该数据库。

邮件

邮件 选项卡包含邮件捕获器,用于展示数据库所发送邮件的概览。

注解

邮件捕获器在开发分支和预发布分支中可用。来自正式运行数据库的邮件会被实际发送出去,不会被邮件捕获器拦截。

分支的邮件选项卡示意图

命令

命令 选项卡提供了对容器的命令行访问权限。

点击 命令 会打开一个新的浏览器标签页,您可以在其中运行基本的 Linux 命令(如 ls、top)。您可以通过运行 psql 命令来打开数据库的命令行。

分支的命令选项卡示意图

小技巧

您可以同时打开多个命令标签页,并通过拖放来排列它们的布局。

注解

  • 正式运行实例的命令行界面会以红色高亮显示,以强调直接操作正式运行实例的风险;而预发布/开发实例的命令行界面则以黄色高亮显示。

  • 长时间运行或空闲的命令行会话可能会随时被终止以释放资源。

常用命令

以下是一些可以在 Odoo.sh 数据库终端中运行的有用命令概览:

  • odoo-bin shell:打开 Odoo 命令行

  • odoo-update:更新数据库中的模块

  • odoosh-restart:重启 Odoo.sh 服务(http 或 cron)

  • odoosh-storage:检查您实例容器文件系统的存储空间使用情况

  • psql:打开数据库命令行界面

  • mutt:查看邮件在文本客户端中的显示效果(适用于预发布和开发实例)

  • lnav ~/logs/odoo.log:浏览您实例的 odoo.log 日志文件

  • ncdu:启动具有交互界面的磁盘使用情况分析器

  • grep:在日志或配置文件中筛选和查找信息

编辑

点击 编辑 会打开一个新的浏览器标签页,访问一个在线集成开发环境(IDE)来编辑源代码。您还可以打开终端、Python 控制台和 Odoo 命令行控制台。

分支的编辑选项卡示意图

您可以打开多个标签页,并通过拖放按需排列布局。

监控

监控 选项卡显示当前构建的各项性能监控指标。

您可以用光标进行缩放来调整时间范围,或通过时间范围选择器手动选择。也可以更改时区。

分支监控选项卡中的时间范围选择器示意图

注解

  • 技术日志始终使用 UTC(协调世界时)。为了将这些日志与您的监控指标一起分析,请确保在监控工具中选择了 UTC(协调世界时)

  • 同样,当提交技术支持请求时,请确保您分享的信息基于 UTC(协调世界时),因为 Odoo 使用此时区来调查性能问题。

显示的信息会定期聚合。当发生聚合时,会显示一条蓝色的虚线,并带有 聚合日期 标签。这意味着此日期之前的数据与之后的数据相比会显得较为平缓。因此,在使用监控工具时,建议重点关注最近的事件,以获取尽可能详细的信息。

注解

其他颜色的虚线有助于您关联构建中的其他更改(例如数据库导入、Git推送等)。

CPU监控聚合数据示意图

小技巧

在每个图表上,左上角会显示一个 𝕚(信息)图标。将鼠标悬停在该图标上,可以获取有关该图表所代表内容的更多详细信息。

指标

系统

内存 图表显示内存消耗信息:

  • 容器内存 代表 Odoo 工作进程和容器进程。

  • :guilabel:`PostgreSQL 内存`代表数据库。

监控选项卡中的内存图表示意图

CPU 图表显示 CPU 消耗信息:

  • :guilabel:`CPU http`代表 Odoo 工作进程。

  • CPU cron/邮件 代表计划操作和接收邮件。

  • :guilabel:`PostgreSQL CPU`(数据库进程)

  • 其他 CPU 代表网页命令行、编辑器等。

监控选项卡中的 CPU 图表示意图

存储 图表显示存储空间使用情况:

  • 容器 代表文件存储、日志文件和用户文件。

  • PostgreSQL 代表数据库及索引。

监控选项卡中的存储图表示意图
HTTP

:guilabel:`请求`图表显示每秒 HTTP 请求数量的信息:

  • HTTP 成功 代表成功的请求。

  • HTTP 错误 代表失败的请求(请检查 odoo.log 日志)。

  • HTTP 被限制 代表被拒绝的请求,可能由于工作进程不足。

监控选项卡中的请求图表示意图

:guilabel:`并发请求(最大)`图表显示每秒最大并发 HTTP 请求数。

监控选项卡中的并发请求图表示意图

注解

数据库工作进程决定了可以同时处理的并发请求数量。拥有足够的工作进程来处理所有到达的传入请求至关重要。然而,超过此数量的额外工作进程并不会提高请求处理速度。

:guilabel:`平均响应时间`显示 HTTP 请求的平均响应时间(单位:毫秒)。

监控选项卡中的平均响应时间图表示意图
邮件

入站邮件 图表显示每日入站邮件数量的数据:

  • 已接收邮件 代表成功接收的邮件。

  • 已接收邮件退信 代表接收失败的邮件。

监控选项卡中的入站邮件图表示意图

出站邮件 图表显示每日出站邮件数量的数据:

  • 已发送邮件 代表成功发送的邮件。

  • 已发送邮件退信 代表发送失败的邮件。

监控选项卡中的出站邮件图表示意图

日志

日志 选项卡提供服务器日志的实时查看界面。

分支的日志选项卡示意图

可以使用不同的日志:

  • pip.log:Python 依赖项的安装日志

  • install.log:数据库安装日志(对于开发分支,包含测试日志)

  • odoosh-import-database.log:最后一次导入数据库转储的进程日志

  • odoo.log:正在运行的服务器的日志

  • update.log:数据库更新日志

  • pg_slow_queries.log:耗时异常的 PostgreSQL 查询日志

  • sh_webshell.log:在网页命令行中执行的操作日志

  • sh_editor.log:在编辑器中执行的操作日志

  • neutralize.log:数据库中和化过程日志(仅预发布环境)

日志自动滚动

当日志新增内容时,系统会自动显示。如果您已滚动至日志底部,浏览器将在每次添加新行时自动滚动更新。

您可点击右上角的 )按钮暂停日志获取。否则,该过程将在五分钟后自动停止。点击 )按钮可重新开始。

备份

备份 选项卡列出了可供下载与恢复的备份,您还可以在此手动创建备份或导入数据库。

分支的备份选项卡示意图

正式运行数据库每日会自动备份。系统将保留7份每日备份、4份每周备份以及3份每月备份。每次备份均包含数据库转储、文件存储(附件与二进制字段)、日志及会话。

注解

您可以参考 自动备份预估排期表 以进一步了解其运行机制。该文件每日更新,并以当天作为起始计算点。

预发布与开发数据库不会自动备份。但出于测试需要,或为手动恢复正式运行数据库中意外删除的数据,您可以在预发布分支中恢复正式运行数据库的备份。

列表中包含的是您正式运行数据库服务器上保存的备份。该服务器仅保留一个月内的备份:即7份每日备份和4份每周备份。

专用备份服务器会保存相同的备份,并额外保留3份每月备份。如需恢复或下载这些月度备份,请联系 Odoo 技术支持 <https://www.odoo.com/help>_。

当合并一个更新了单个或多个模块版本(在 __manifest__.py 中)或其关联 Python 依赖项(在 requirements.txt 中)的提交时,Odoo.sh 会执行一次自动备份(在列表中标记为 Update 类型)。这是因为安装新的 pip 包会更改容器,或随后触发的模块更新会更改数据库本身。这两种情况都可能引发问题,因此将触发备份。

如果合并的提交未更新模块版本或相关依赖项,Odoo.sh 不会触发备份,因为容器和数据库均未修改;因此平台认为这足够安全。为额外保险起见,您可以在修改正式运行源代码之前手动创建备份。

手动备份的目的是为正式运行或预发布数据库(不适用于开发环境)创建特定的快照。这些备份会保留七天,但每日手动备份限制为五次。

环境阶段

自动备份

手动备份

生产

是(最长保留3个月)

是(保留3天)

预发布

是(保留3天)

开发

导入数据库 功能支持从以下来源导入数据库存档:

  • 标准 Odoo 数据库管理器(本地 Odoo 服务器可通过 /web/database/manager 访问)

  • Odoo 在线版数据库管理器

  • Odoo.sh 的 备份 选项卡(使用 )按钮)

  • Odoo.sh 的 构建 <builds>`视图(点击 :guilabel:`下载数据库转储

升级

升级 选项卡可用于升级有效项目的正式运行分支和预发布分支。有关升级过程的更多信息,请参阅 升级文档

分支的升级选项卡

工具

工具 选项卡包含代码性能分析器。它用于启动一个性能分析会话,记录实例中运行的 Odoo 工作进程的活动,最长持续五分钟。您可以选择提前结束会话,因为缩短工具运行时间可以减少报告中的干扰信息。

使用代码性能分析器示意图

每次会话结束后,系统会生成一个交互式火焰图,帮助您直观了解 Odoo 工作进程的时间分配情况。

警告

运行分析器会消耗大量服务器资源,因此请避免让其运行过长时间。其目的是记录您在数据库中的特定操作。

设置

:guilabel:`设置`选项卡列出了当前所选分支可用的配置选项。不同阶段的可用选项有所不同。

分支的设置选项卡

新提交时的行为

您可以更改**开发**分支和**预发布**分支在接收到新提交时的行为。

默认情况下,**开发**分支会创建一个新构建,而预发布分支则会更新之前的构建。如果您正在开发的功能需要特定配置,这将非常有用,因为您无需在每次提交后重新手动配置。

如果您为**预发布**分支选择 新建构建,则每次推送提交时都会创建一个正式运行构建的新副本。

从**预发布**移至**开发**环境的分支,会自动设置为 不执行任何操作

模块安装

您可以针对**开发**分支,选择应自动安装哪些模块。

设置选项卡的模块安装部分

要更改默认行为,请取消勾选 开发构建行为 下的 使用默认设置 选项,然后在 :guilabel:`模块安装`下选择以下选项之一:

  • 仅安装我的模块(不包含子模块):仅安装该分支的模块,不包括 子模块。此为默认选项。

  • 完整安装(不运行测试套件):安装该分支的模块、子模块以及所有标准 Odoo 模块。执行完整安装时,测试套件将被禁用。

  • 安装指定模块列表:安装指定的模块。为此,请输入模块的技术名称,并使用逗号分隔(例如:sale_management,website,accountant)。

注解

如果启用了测试套件,安装所有标准 Odoo 模块可能耗时长达一小时。

测试套件

默认情况下,**开发**分支的测试套件是启用的。您可以通过输入 测试标签 并用逗号分隔(例如:custom_tags,at_install,post_install)来限制运行的测试范围。

若需完全禁用测试套件,取消勾选 :guilabel:`新版本构建时验证测试套件选项`即可。

Odoo 版本

你可以为**开发**分支更换 Odoo 版本,例如正式运行数据库升级至新版本的过程中,测试已升级的代码或开发新功能,操作方式为选择其他 :guilabel:`版本`选项。

系统默认将 修订版本`设置为 :guilabel:`最新版,Odoo 服务器源码会每周自动更新,以整合最新的漏洞修复、安全补丁与性能优化。

若需指定特定修订版本,直接在 :guilabel:`修订版本`字段中选择即可。

警告

修订在三个月后失效。修订过期时,您将收到电子邮件通知。如果过期时您没有采取任何行动, 修订版`字段将自动设回 :guilabel:`最新

设置选项卡修订

自定义域

你可以为所有类型的分支,配置额外的 <name>.odoo.com 格式域名,或使用自有自定义域名。

使用自有自定义域名,需完成以下步骤:

  • 拥有或购买域名。

  • 自定义域名 下输入域名(例如,www.mycompany.com),然后点击 添加域名

  • 使用注册商的域名管理器配置域名(如 www.mycompany.com),并将 CNAME 记录值设置为生产数据库域名(如 mycompany.odoo.com)。

重要

系统不支持裸域名(例如 mycompany.com)。裸域名仅能通过 **A* 记录配置,而 A 记录的值必须为固定 IP 地址。由于数据库的 IP 地址可能发生变动(例如系统升级、硬件故障、数据库托管位置迁移等情况),裸域名可能会突然无法访问。

若需同时使用裸域名(例如 mycompany.com)与带 www 前缀的域名(例如 www.mycompany.com),需将裸域名重定向至带* www* 前缀的域名。多数域名管理工具均支持配置此项功能,该功能通常被称为网页重定向。

HTTPS/SSL

如果重定向设置正确,SSL 证书将在一小时内使用 `Let’s Encrypt <https://letsencrypt.org/about>`_自动生成,这意味着您的域名可以通过 HTTPS 访问。

SPF 和 DKIM 合规

如果您的电子邮件地址的域名使用 SPF(发件人政策框架)DKIM(域名密钥识别邮件) 身份验证协议,则有必要在域名设置中授权 Odoo 作为发送主机,以提高外发电子邮件的可送达性。更多信息,请参阅 在 Odoo 文档中配置 DNS 记录以发送电子邮件

重要

如果 Odoo 未被授权为发送主机,您的外发邮件可能会被标记为垃圾邮件。

Shell 命令快捷方式

在视图的右上角会显示多个 Shell 命令,你可通过剪贴板按钮复制这些命令,然后在终端中执行。此外,部分命令还可直接在 Odoo.sh 界面中使用。

分支 Shell 命令快捷方式

克隆

克隆命令用于为你的 Git 代码仓库创建本地副本。

Example

git clone --recurse-submodules --branch development git@github.com:my-organization/my-repository.git
  • --recurse-submodules:下载代码仓库中的子模块

  • --branch main 切换到仓库的指定分支(示例:development 分支

注解

该命令仅用于在本地机器创建代码副本,因此对应的 “运行” 按钮不可用。

分叉

分叉命令用于基于当前分支创建新分支。

Example

git checkout -b main-1 development && git push -u origin development-1
  • git checkout -b main-1 main:基于当前分支(示例:development)创建新分支(示例:development-1)的命令

  • git push -u origin development-1 :将新建的分支(示例:development-1)上传至远程代码仓库的命令

合并

合并命令用于将一个分支的更改整合至另一个分支。

Example

git merge staging-1 && git push -u origin staging
  • git merge staging-1 将当前分支的更改合并至另一分支(示例:staging-1)的命令

  • git push -u origin staging :将合并后的更改上传至远程仓库对应分支(示例:staging)的命令

SSH

SSH 命令用于通过 SSH 协议连接至构建环境。

使用该命令前,需先配置 SSH 密钥,具体步骤如下:

Example

ssh 25004381@my-user-my-repository-staging-25004381.dev.odoo.com
  • 25004381 the build ID

  • `my-user-my-repository-staging-25004381.dev.odoo.com`用于连接该构建环境的域名。

只要你拥有该项目所需的 访问权限,即可获得该构建环境的 SSH 访问权限。

注解

SSH 长连接不保证持续可用。系统可能断开闲置的连接以释放服务器资源。

子模块

子模块命令用于将其他代码仓库的分支,以子模块形式添加至当前分支。

Example

git submodule add -b master <URL> <PATH> && git commit -a && git push -u origin staging
  • git submodule add -b master <URL> <PATH>:将指定代码仓库(<URL>)的特定分支(示例:master),作为子模块添加到当前分支的指定路径(<PATH>)下。

  • git commit -a:提交所有当前变更的命令

  • git push -u origin staging 将当前分支(例如 staging 分支)的变更上传至远程代码仓库的命令。

删除

删除命令用于从代码仓库中删除指定分支。

注解

分支一旦被删除,若无备份则无法恢复。预发布分支不会自动备份,但可手动备份。开发分支不支持备份操作。

Example

git push origin :staging && git branch -D staging
  • git push origin :staging 删除远程代码仓库中指定分支(例如`staging`)的命令

  • git branch -D staging 删除本地代码仓库副本中指定分支的命令

警告

删除分支前,请参考 备份章节,以充分了解备份功能的工作机制及手动备份的适用场景。