分支

Overview

分支视图为您提供了一个概览,显示了您的仓库拥有的不同分支。

../../../_images/interface-branches.png

阶段

Odoo.sh 为您的分支提供了三种不同的环境:生产环境、预发布环境和开发环境。

你可以通过将分支拖放到阶段部分的标题中来更改其阶段。

../../../_images/interface-branches-stagechange.png

生产

这是保存您的生产数据库运行代码的分支。只能有一个生产分支。

当你在此分支中推送新提交时,生产服务器将使用新修订版本的代码进行更新,并随后重启。

如果您对模块的更改需要更新模块(例如表单视图的更改),并且希望自动执行此操作,请在模块的清单文件(__manifest__.py)中增加模块的版本号。平台将在此期间自动执行更新操作,此时实例将暂时不可用,以便进行维护。

此方法相当于通过“应用”菜单升级模块,或者通过 命令行-u 开关进行升级。

如果提交中的更改导致服务器无法重启,或者模块更新失败,服务器会自动回退到之前的成功代码版本,并且数据库也会回滚到更新前的状态。您仍然可以访问失败更新的日志,以便进行故障排查。

演示数据未被加载,因为它不适用于生产数据库。未执行单元测试,因为这会增加更新期间生产数据库的不可用时间。

使用试用项目的合作伙伴应注意到,其生产分支以及所有暂存分支将在30天后自动回退到开发阶段。

试运行

预发布分支旨在使用生产数据测试您的新功能,而不会用测试记录影响实际的生产数据库。它们将创建与生产数据库完全相同的副本,但这些副本是经过中和处理的。

中和包括:

  • 禁用计划任务。如果您想测试它们,可以手动触发其操作或重新启用它们。请注意,如果没有人使用数据库,平台会减少触发频率以节省资源。

  • 通过使用邮件捕获工具拦截传出邮件。提供了一个 查看 数据库发送邮件的界面。这样,您就不必担心向联系人发送测试邮件了。

  • 在测试模式下设置付款方式和配送方式。

  • 禁用IAP服务

最新数据库将无限期保留,同一分支的旧数据库可能会被垃圾回收以腾出空间给新数据库。该数据库的有效期为3个月,之后您需要重新构建该分支。如果您在这些数据库中进行了配置或视图更改,请确保记录下来,或者直接将更改写入该分支的模块中,使用XML数据文件覆盖默认配置或视图。

单元测试目前未执行,因为在 Odoo 中,这些测试当前依赖于演示数据,而演示数据不会在生产数据库中加载。未来,如果 Odoo 支持在不使用演示数据的情况下运行单元测试,Odoo.sh 将考虑在预发布数据库上运行测试。

开发

开发分支会使用演示数据创建新数据库以运行单元测试。安装的模块是您分支中包含的模块。您可以更改此模块列表以在您的 项目设置 中安装。

当你在这些分支中的任何一个推送新提交时,会启动一个新的服务器,该服务器从头开始创建一个数据库,并使用该分支的新版本。默认情况下会加载演示数据并执行单元测试。这可以验证你的更改不会破坏它们所测试的任何功能。如果你愿意,可以在 分支的设置 中禁用测试,或允许通过自定义标签运行特定测试。

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

为开发分支创建的数据库预计使用约三天。之后,它们可以被自动垃圾回收,以腾出空间供新数据库使用,且无需事先通知。

合并您的分支

你可以通过将它们拖放到彼此中来轻松合并分支。

../../../_images/interface-branches-merge.png

当你希望使用生产数据测试开发分支的更改时,你可以选择以下方式之一:

  • 将开发分支合并到您的预发布分支中,可通过将其拖放到所需的预发布分支上完成。

  • 将开发分支拖放到“暂存区”部分的标题上,以将其变为暂存分支。

当您最新的更改准备好投入生产时,您可以将暂存分支拖放到生产分支上,以合并并将最新功能部署到生产环境中。

如果你足够大胆,也可以将开发分支合并到生产分支中。这仅仅意味着你跳过了通过暂存分支对生产数据进行变更验证的步骤。

你可以将开发分支相互合并,也将暂存分支相互合并。

当然,你也可以在你的工作站上直接使用 git merge 来合并你的分支。当你的分支中有新的提交被推送时,Odoo.sh 会收到通知。

在生产分支中合并暂存分支仅会合并源代码:您在暂存数据库中所做的任何配置更改都不会传递到生产数据库中。

如果你在预发布分支中测试配置更改,并希望将这些更改应用到生产环境,你必须执行以下操作之一:

  • 在 XML 数据文件中编写配置更改,以覆盖您分支中的默认配置或视图,然后在其清单文件 (__manifest__.py) 中增加模块版本号,以便在将您的测试分支合并到生产分支时触发模块更新。这是提升开发可扩展性的最佳实践,因为您可以使用 Git 版本控制功能来管理所有配置更改,从而实现对更改的可追溯性。

  • 通过复制/粘贴的方式,将它们手动从测试数据库传递到生产数据库。

标签页

历史记录

您的分支机构历史概览:

  • 提交消息及其作者的消息,

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

../../../_images/interface-branches-history.png

每个事件的右上角会显示一个状态。它可能提供有关数据库正在进行的操作(安装、更新、备份导入等)的信息,或者其结果(测试反馈、成功备份导入等)。当操作成功时,您可以点击 连接 按钮访问数据库。

邮件

此选项卡包含邮件捕获器。它显示了您的数据库发送的邮件概览。邮件捕获器适用于您的开发和测试分支,因为生产数据库的邮件会真正被发送,而不是被拦截。

../../../_images/interface-branches-mails.png

Shell

对您的容器的 shell 访问权限。您可以执行基本的 Linux 命令(ls, top),并通过输入 psql 打开数据库的 shell。

../../../_images/interface-branches-shell.png

你可以打开多个标签页,并通过拖放来调整布局,例如并排显示。

注解

长时间运行的 shell 实例无法得到保证。空闲的 shell 可能随时被断开连接,以释放资源。

编辑器

一个用于编辑源代码的在线集成开发环境(IDE)。你还可以打开终端、Python 控制台甚至 Odoo Shell 控制台。

../../../_images/interface-branches-editor.png

你可以打开多个标签页,并通过拖放来调整布局,例如并排显示。

监控

此链接包含当前构建的各种监控指标。

../../../_images/interface-branches-monitoring.png

您可以对每个图表进行缩放、更改时间范围或选择特定的指标。在图表中,注释可以帮助您将变化与构建(数据库导入、git 提交等)联系起来。

日志

一个用于查看服务器日志的查看器。

../../../_images/interface-branches-logs.png

可用的日志类型如下:

  • install.log: 数据库安装的日志。在开发分支中,还包括测试的日志。

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

  • odoo.log: 运行中的服务器日志。

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

  • pg_long_queries.log:记录执行时间异常长的 psql 查询日志。

如果日志中添加了新行,将会自动显示。如果您滚动到底部,每当添加新行时,浏览器都会自动滚动。

你可以通过点击视图右上角的相应按钮来暂停日志获取。5分钟后,获取操作将自动停止。你可以使用播放按钮重新启动它。

备份

可用于下载和恢复的备份列表,具备手动备份功能以及数据库导入功能。

../../../_images/interface-branches-backups.png

Odoo.sh 会每天对生产数据库进行备份。它保留 7 个每日、4 个每周和 3 个每月的备份。每个备份包括数据库转储、文件存储(附件、二进制字段)、日志和会话。

暂存和开发数据库不会进行备份。您仍然可以将生产数据库的备份恢复到您的暂存分支中,用于测试目的,或手动恢复因意外从生产数据库中删除的数据。

列表中包含保存在您的生产数据库所在服务器上的备份。此服务器仅保留一个月的备份:7个每日备份和4个每周备份。

专用备份服务器保留相同的备份,以及3个额外的月度备份。如需恢复或下载其中一个月度备份,请`联系我们 <https://www.odoo.com/help>`_。

如果您合并了一个更新一个或多个模块版本(在 __manifest__.py 中)或其关联的 Python 依赖项(在 requirements.txt 中)的提交,那么 Odoo.sh 会自动进行备份(在列表中标记为类型 "Update"),因为新 pip 包的安装可能会更改容器,或者随后触发的模块更新可能会更改数据库。在这两种情况下,我们都会进行备份,因为这可能会导致某些问题。

如果您合并的提交仅修改了部分代码而没有进行上述修改,那么 Odoo.sh 不会进行备份,因为容器和数据库都没有被修改,平台认为这种情况下足够安全。当然,作为额外的预防措施,您可以在对生产环境代码进行重大更改之前手动创建备份,以防出现意外情况(这些手动备份大约保留一周)。为了避免滥用,我们每天限制手动备份次数为 5 次。

“导入数据库”功能接受由以下方式提供的数据库存档格式:

  • 标准 Odoo 数据库管理器(适用于本地部署的 Odoo 服务器,路径为 /web/database/manager

  • Odoo 在线数据库管理器,

  • Backups 选项卡中的 Odoo.sh 备份下载按钮,

  • Odoo.sh 的构建视图(构建视图)中的转储下载按钮。

Upgrade

适用于有效项目的生产环境和测试环境分支。

另请参见

升级文档

设置

您可以在这里找到一些仅适用于当前所选分支的设置。

../../../_images/interface-branches-settings.jpg

新提交时的行为

对于开发和预发布分支,您可以更改分支在接收到新提交时的行为。默认情况下,开发分支会创建一个新的构建,而预发布分支会更新之前的构建(参见 生产阶段)。这对于您正在开发的功能需要特定设置或配置时特别有用,可以避免每次提交都要手动重新设置。如果您为预发布分支选择“新建构建”,则每次推送提交时都会从生产构建中生成一个全新副本。如果一个分支从预发布回退到开发,则会自动设置为“不做任何操作”。

模块安装

为您的开发构建自动安装模块。

../../../_images/interface-settings-modulesinstallation.png
  • 仅安装我的模块 将仅安装该分支的模块。这是默认选项。子模块 会被排除。

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

  • 安装模块列表 将安装在此选项下方输入的模块。模块名称为技术名称,必须用逗号分隔。

如果启用了测试,标准 Odoo 模块套件可能需要长达 1 小时。此设置仅适用于开发版本。预发布版本会复制生产版本,而生产版本仅安装基础模块。

测试套件

对于开发分支,您可以选择启用或禁用测试套件。默认情况下是启用的。当测试套件启用时,您可以通过指定测试标签 测试标签 来对其进行限制。

Odoo 版本

仅限开发分支,如果您希望测试升级后的代码或在生产数据库正在升级到新版本的过程中开发功能,可以更改 Odoo 的版本。

此外,对于每个版本,您在代码更新方面有两种选择。

  • 您可以选择自动受益于最新的错误修复、安全补丁和性能改进。您的 Odoo 服务器源代码将每周更新。这是“最新”选项。

  • 您可以选择通过从日期列表中选择来将 Odoo 源代码固定到特定版本。版本将在 3 个月后过期。当到期日临近时,您将收到邮件通知,如果您之后未采取任何操作,系统将自动为您设置为最新版本。

自定义域名

在这里,您可以为所选分支配置其他域名。可以添加其他 <name>.odoo.com 域名或您自己的自定义域名。对于后者,您需要:

  • 自购或采购域名,

  • 将域名添加到此列表中,

  • 在您的域名注册商的域名管理器中,将域名配置为指向您生产数据库域名的 CNAME 记录。

例如,将 www.mycompany.com 关联到您的数据库 mycompany.odoo.com

  • 在 Odoo.sh 中,将 www.mycompany.com 添加到项目设置的自定义域名中,

  • 在您的域名管理器(例如 godaddy.comgandi.netovh.com)中,将 www.mycompany.com 配置为一个 CNAME 记录,其值为 mycompany.odoo.com

不接受裸域名(例如 mycompany.com):

  • 它们只能通过 A 记录进行配置,

  • A 记录仅接受 IP 地址作为值,

  • 您的数据库的IP地址可能会发生变化,这可能是在升级之后、发生硬件故障时,或者您希望将数据库托管到另一个国家或大洲时。

因此,由于IP地址的更改,裸域名可能突然无法正常工作。

此外,如果您希望 mycompany.comwww.mycompany.com 都能与您的数据库一起使用,将第一个重定向到第二个是 `SEO 最佳实践 <https://support.google.com/webmasters/answer/7451184?hl=en>`_(请参阅 提供一个 URL 版本以访问文档)的一部分,以便拥有一个主导的 URL。因此,您可以只需将 mycompany.com 配置为重定向到 www.mycompany.com。大多数域名管理工具都提供了配置此重定向的功能。这通常被称为网页重定向。

HTTPS/SSL

如果重定向正确设置,平台将在一小时内自动生成一个 Let’s Encrypt 的 SSL 证书,您的域名将可以通过 HTTPS 访问。

虽然目前在 Odoo.sh 平台上还无法配置自定义的 SSL 证书,但如果需求足够多,我们将考虑增加该功能。

SPF 和 DKIM 合规性

如果您的用户电子邮件地址使用的域名启用了 SPF(发件人策略框架)或 DKIM(域名密钥识别邮件),请不要忘记在您的域名设置中将 Odoo 授权为发送主机,以提高您发出的电子邮件的投递率。配置步骤请参阅关于 SPFDKIM 的文档。

警告

忘记配置您的 SPF 或 DKIM 以授权 Odoo 作为发件主机,可能导致您的电子邮件被误判为垃圾邮件,进入联系人的收件箱。

Shell 命令

在视图的右上角,可以找到不同的 shell 命令。

../../../_images/interface-branches-shellcommands.png

Each command can be copied in the clipboard to be used in a terminal, and some of them can be used directly from Odoo.sh by clicking the run button in such case a popup will prompt the user in order to define eventual placeholders such as <URL>, <PATH>, …

克隆

下载 Git 仓库。

$ git clone --recurse-submodules --branch master git@github.com:odoo/odoo.git

克隆仓库 odoo/odoo

  • --recurse-submodules:下载仓库的子模块。子模块中的子模块也会被一并下载。

  • --branch: 检出仓库的特定分支,在此情况下为 master

此命令的“运行”按钮不可用,因为它旨在用于您的机器上。

分叉

基于当前分支创建一个新分支。

$ git checkout -b feature-1 master

创建一个名为 feature-1 的新分支,基于 master 分支,然后切换到该分支。

$ git push -u origin feature-1

将新分支 feature-1 上传到你的远程仓库。

合并

将当前分支合并到另一个分支中。

$ git merge staging-1

staging-1 分支合并到当前分支中。

$ git push -u origin master

将您在远程仓库的 master 分支上刚刚添加的更改上传。

SSH

设置

要使用 SSH,您需要设置您的个人资料的 SSH 公钥(如果尚未设置)。操作步骤如下:

  1. 生成新的 SSH 密钥

  2. Copy the SSH key to your clipboard (only apply the step 1)

  3. 将复制的内容粘贴到您的个人资料的 SSH 密钥中,然后点击“添加”

    ../../../_images/SSH-key-pasting.png
  4. 键应显示在下方

    ../../../_images/SSH-key-appearing.png

连接

要通过 SSH 连接到您的构建,请在终端中使用以下命令:

$ ssh <build_id>@<domain>

你可以在右上角的 SSH 选项卡中找到此命令的快捷方式。

../../../_images/SSH-panel.png

只要你对该项目拥有正确的 访问权限,你将被授予对构建的 SSH 访问权限。

注解

长时间的 SSH 连接无法得到保证。空闲连接将被断开,以释放资源。

子模块

在你的当前分支中,将另一个仓库的分支作为 子模块 添加。

子模块 允许您在项目中使用其他仓库中的模块。

子模块功能在本文档的章节 子模块 中有详细说明。

$ git submodule add -b master <URL> <PATH>

将当前分支中路径 <PATH> 下的仓库 <URL> 的分支 master 添加为子模块。

$ git commit -a

提交您当前的所有更改。

$ git push -u origin master

将您在远程仓库的 master 分支上刚刚添加的更改上传。

删除

从您的仓库中删除一个分支。

$ git push origin :master

删除远程仓库中的分支。

$ git branch -D master

删除本地仓库中的分支。