分支

概览

分支视图为您提供了您的代码库中不同分支的概览。

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

阶段

Odoo.sh为您的分支提供三个不同的阶段:生产、暂存和开发。

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

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

生产

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

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

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

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

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

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

使用试用项目的合作伴应该知道,他们的生产分支以及所有的暂存分支将在30天后自动设置回开发阶段。

暂存

Staging分支旨在使用生产数据测试新功能,而不会通过测试记录来危及实际生产数据库。它们将创建生产数据库的中性副本。

中和包括:

  • 禁用定时操作。如果您想测试它们,可以手动触发它们的操作或重新启用它们。请注意,如果没有人使用数据库,平台会更少地触发它们,以节省资源。

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

  • 将支付提供商和运输提供商设置为测试模式。

  • 禁用 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

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

邮件

此选项卡包含邮件捕获器。它显示数据库发送的电子邮件概述。邮件捕获器适用于您的开发和暂存分支,因为您的生产数据库的电子邮件实际上是发送而不是被拦截。

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

命令行

A shell access to your container. You can perform basic linux commands (ls, top) and open a shell on your database by typing psql.

../../../_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个每月备份。要恢复或下载其中一个每月备份,请 联系我们.

如果您合并了一个更新一个或多个模块版本的提交(在 __manifest__.py 中),或者它们链接的 Python 依赖项(在 requirements.txt 中),那么 Odoo.sh 会自动执行备份(在列表中标记为更新类型),因为容器将通过安装新的 pip 包进行更改,或者数据库本身将在之后触发的模块更新中进行更改。在这两种情况下,我们都会进行备份,因为它可能会潜在地破坏事物。

如果您合并了一个仅更改了一些代码而没有上述修改的提交,则Odoo.sh不会执行备份,因为容器和数据库都没有被修改,因此平台认为这足够安全。当然,在进行生产源的重大更改之前,您可以手动备份以防万一(这些手动备份可用约一周)。为了避免滥用,我们将手动备份限制为每天5次。

The import database feature accepts database archives in the format provided by:

  • 标准的Odoo数据库管理器,(适用于本地Odoo服务器,在 /web/database/manager 下可用)

  • Odoo 在线数据库管理器,

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

  • 构建视图 中的 Odoo.sh dump 下载按钮。

升级

对于有效项目,生产和暂存分支可用。

另请参阅

Upgrade documentation

设置

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

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

新提交的行为

对于开发和暂存分支,您可以更改分支在接收到新提交时的行为。默认情况下,开发分支将创建一个新的构建,而暂存分支将更新先前的构建(参见 Production Stage )。这在您正在开发的功能需要特定的设置或配置时特别有用,以避免在每次提交时手动设置它。如果您选择为暂存分支创建新的构建,它将在每次提交时从生产构建中创建一个新的副本。将分支从暂存返回到开发时,将自动设置为“不执行任何操作”。

模块安装

选择自动安装开发构建所需的模块。

../../../_images/interface-settings-modulesinstallation.png
  • Install only my modules will install the modules of the branch only. This is the default option. The submodules are excluded.

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

  • 安装模块列表 将安装在此选项下方指定的模块。模块的名称是模块的技术名称,它们必须用逗号分隔。

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

测试套件

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

Odoo 版本

仅适用于开发分支,您可以更改Odoo的版本,以便在生产数据库正在升级到新版本的过程中测试升级代码或开发功能。

此外,对于每个版本,您有两个选项来更新代码。

  • 您可以选择自动获得最新的错误修复、安全性和性能修复。您的Odoo服务器源代码将每周更新一次。这是“最新”选项。

  • 您可以选择从日期列表中选择特定的Odoo源代码版本,并将其固定在特定的修订版本上。修订版本将在3个月后过期。当到期日期临近时,您将通过电子邮件收到通知,如果您在此之后不采取任何行动,系统将自动将您设置为最新版本。

自定义域名

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

  • 拥有或购买域名,

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

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

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

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

  • 在您的域名管理器中(例如 godaddy.comgandi.netovh.com ),使用值为 mycompany.odoo.comCNAME 记录配置 www.mycompany.com

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

  • 它们只能使用 A 记录进行配置,

  • A records only accept IP addresses as value,

  • 您的数据库的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 合规性

In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM (DomainKeys Identified Mail), don’t forget to authorize Odoo as a sending host in your domain name settings to increase the deliverability of your outgoing emails. The configuration steps are explained in the documentation about SPF and DKIM.

警告

忘记配置SPF或DKIM以授权Odoo作为发送主机可能会导致您的邮件被投递到您联系人的垃圾邮件收件箱中。

Shell 命令

在视图的右上角,有不同的 shell 命令可用。

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

每个命令都可以复制到剪贴板中,以便在终端中使用,其中一些命令可以直接从Odoo.sh中通过点击 run 按钮来使用,在这种情况下,弹出窗口将提示用户定义可能的占位符,例如 <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

上传您刚刚在远程存储库的 分支中添加的更改。

SSH

设置

为了使用SSH,您必须设置您的SSH公钥配置文件(如果尚未完成)。请按照以下步骤操作:

  1. Generate a new SSH key

  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>

将存储库 <URL> 的分支 master 作为子模块添加到您当前分支的路径 <PATH> 下。

$ git commit -a

提交您当前的所有更改。

$ git push -u origin master

上传您刚刚在远程存储库的 分支中添加的更改。

删除

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

$ git push origin :master

删除您的远程存储库中的分支。

$ git branch -D master

删除您本地仓库中的分支。