分支¶
分支视图提供了您代码仓库中各个分支的概览。
阶段¶
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)来限制运行的测试范围。
To disable the test suite entirely, untick Validate the test suite on new builds.
Odoo版本¶
You can change the version of Odoo for development branches, for example, to test upgraded code or develop features while your production database is in the process of being upgraded to a newer version, by selecting another Version.
By default, Latest is selected as the Revision, and the sources of your Odoo server are updated weekly automatically to benefit from the latest bug, security, and performance fixes.
To choose a specific revision instead, select it using the Revision field.
警告
Revisions expire after three months. You will be notified by email when the revision’s expiration date approaches. If you have not taken any action when it expires, the Revision field is automatically set back to Latest.
自定义域¶
You can configure additional <name>.odoo.com domains or your own custom domains for all branch
types.
To use your own custom domain, it is necessary to:
Own or purchase the domain name.
Enter the domain name under Custom domains (e.g.,
www.mycompany.com), then click Add domain.Configure the domain name (e.g.,
www.mycompany.com) using your registrar’s domain name manager with a CNAME record value set to your production database domain name (e.g.,mycompany.odoo.com).
重要
Bare domains (e.g., mycompany.com) are not accepted. They can only be configured using A
records, which only accept IP addresses as their value. Therefore, a bare domain could suddenly
cease to function, as the IP address of a database can change (e.g., following an upgrade, a
hardware failure, a change of database hosting location).
To have both your bare domain (e.g., mycompany.com) and www domain (e.g., www.mycompany.com)
working, it is necessary to redirect the bare domain to the www domain. .com. Most domain managers
provide a way to configure this redirection, commonly referred to as a web redirection.
HTTPS/SSL¶
If the redirection is correctly set up, an SSL certificate is automatically generated using Let’s Encrypt within the hour, meaning your domain will be accessible through HTTPS.
SPF and DKIM compliance¶
If the domain of your email addresses uses the SPF or DKIM authentication protocol, it is necessary to authorize Odoo as a sending host in the domain name settings to increase the deliverability of outgoing emails. For more information, refer to the Configure DNS records to send emails in Odoo documentation.
重要
If Odoo is not authorized as a sending host, your outgoing emails may be flagged as spam.
命令行管理程序命令¶
In the top right corner of the view, several shell commands are displayed. The commands can be copied using the clipboard button and then used in a terminal. In addition, some of them can be used directly from Odoo.sh’s interface.
克隆¶
The clone command is used to create a local copy of your Git repository.
Example
git clone --recurse-submodules --branch development git@github.com:my-organization/my-repository.git
--recurse-submodulesto download the submodules of your repository--branch mainto check out to a specific branch of the repository (e.g.,development)
注解
The run button is not available as the command is used to create a local copy on your machine.
分叉¶
The fork command is used to create a new branch based on the current one.
Example
git checkout -b main-1 development && git push -u origin development-1
git checkout -b main-1 main a command to create a new branch (e.g.,
development-1) based on the current branch (e.g.,development)git push -u origin development-1 a command to upload the new branch (e.g.,
development-1) to the remote repository
合并¶
The merge command is used to combine changes on one branch into another branch.
Example
git merge staging-1 && git push -u origin staging
git merge staging-1 a command to merge the changes of the current branch into another branch (e.g.,
staging-1)git push -u origin staging a command to upload the merged changes to the remote repository branch (e.g.,
staging)
SSH¶
The SSH command is used to connect to a build using SSH.
To use the SSH command, it is necessary to set up an SSH key first. To do so:
On Odoo.sh, click your GitHub user in the top-right corner and select Profile.
Paste the SSH key under the Add a key manually field and click Add.
Example
ssh 25004381@my-user-my-repository-staging-25004381.dev.odoo.com
25004381the build IDmy-user-my-repository-staging-25004381.dev.odoo.comthe domain used to connect to the build
Provided you have the necessary access rights on the project, you will be granted SSH access to the build.
注解
Long-running SSH connections are not guaranteed. Idle connections can be disconnected to free up resources.
子模块¶
The submodule command is used to add a branch from another repository to your current branch as a submodule.
Example
git submodule add -b master <URL> <PATH> && git commit -a && git push -u origin staging
git submodule add -b master <URL> <PATH> a command to add a specific branch (e.g.,
master) of a repository (<URL>) as a submodule under the specified path (<PATH>) in your current branch.git commit -a a command to commit all current changes
git push -u origin staging a command to upload the changes of the current branch (e.g.,
staging) to the remote repository.
删除¶
The delete command is used to delete a branch from your repository.
注解
Once you delete a branch, there is no way to retrieve it unless a backup exists. Staging branches are not automatically backed up, but can be manually. Development branches cannot be backed up.
Example
git push origin :staging && git branch -D staging
git push origin :staging a command to delete a specific branch (e.g.,
staging) on the remote repositorygit branch -D staging a command to delete the specific branch on your local copy of the repository
警告
Before deleting a branch, refer to the Backups section to better understand how they work and when you should create a manual backup.