分公司¶
通过 分支 视图,可以概览版本库中的不同分支。
階段¶
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推送等)。
小訣竅
在每个图表上,左上角会显示一个 𝕚(信息)图标。将鼠标悬停在该图标上,可以获取有关该图表所代表内容的更多详细信息。
指标¶
系统¶
内存 图表显示内存消耗信息:
容器内存 代表 Odoo 工作进程和容器进程。
:guilabel:`PostgreSQL 内存`代表数据库。
CPU 图表显示 CPU 消耗信息:
:guilabel:`CPU http`代表 Odoo 工作进程。
CPU cron/邮件 代表计划操作和接收邮件。
:guilabel:`PostgreSQL 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 界面中使用。
複製¶
克隆命令用于为你的 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
25004381the 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删除本地代码仓库副本中指定分支的命令
警告
删除分支前,请参考 备份章节,以充分了解备份功能的工作机制及手动备份的适用场景。