分支

概述

分支视图为您提供了存储库具有的不同分支的概述。

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

阶段

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

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

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

生产

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

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

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

This method is equivalent to perform an upgrade of the module through the Apps menu, or through the -u switch of the command line.

如果提交中的更改阻止服务器重新启动,或者如果模块更新失败,服务器将自动恢复到以前成功的代码修订版,并且数据库将按更新前的状态进行回滚。您仍然可以访问失败更新的日志,以便对其进行故障排除。

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

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

暂存

暂存分支旨在使用生产数据测试新功能,而不会损害具有测试记录的实际生产数据库。他们将创建作为生产数据库的中和副本的数据库。

中和包括:

  • 禁用计划操作。如果要测试它们,可以手动触发它们的操作或重新启用它们。请注意,如果没有人使用数据库以节省资源,则平台将较少地触发它们。

  • 通过使用邮件捕获器拦截传出电子邮件来禁用这些电子邮件。提供了一个:ref:`界面来查看 <odoosh-gettingstarted-branches-tabs-mails>`数据库发送的电子邮件。这样,您就不必担心向联系人发送测试电子邮件。</odoosh-gettingstarted-branches-tabs-mails>

  • 将付款收单行和发货提供商设置为测试模式。

  • 禁用 IAP 服务

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

单元测试不是在执行的,因为在Odoo中,它们当前依赖于演示数据,而演示数据不会加载到生产数据库中。将来,如果Odoo支持在没有演示数据的情况下运行单元测试,Odoo.sh 将考虑在临时数据库上运行测试。

开发

开发分支使用演示数据创建新数据库来运行单元测试。已安装的模块是分支中包含的模块。您可以在 :ref:project Settings 中更改此模块列表以进行安装 <odoosh-gettingstarted-settings-modules-installation>。</odoosh-gettingstarted-settings-modules-installation>

在其中一个分支中推送新提交时,将启动一个新服务器,并从头开始创建数据库和分支的新版本。加载演示数据,并默认执行单元测试。这将验证您的更改不会破坏它们测试的任何功能。如果您愿意,可以禁用测试或允许在 :ref:’branch’’s settings ‘ 中使用自定义标记运行特定测试 <odoosh-gettingstarted-branches-tabs-settings>。</odoosh-gettingstarted-branches-tabs-settings>

与暂存分支类似,电子邮件不会发送,但会被邮件捕获器拦截,并且不会触发计划的操作,因为数据库通常未被使用。

为开发分支创建的数据库应保留三天左右。之后,它们可以自动进行垃圾回收,以便为新数据库腾出空间,恕不另行通知。

合并您的分支机构

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

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

如果要使用生产数据测试开发分支的更改,可以执行以下操作之一:

  • 将开发分支合并到您的暂存分支中,方法是将其拖放到所需的暂存分支上,

  • 将开发分支拖放到暂存部分标题上,以使其成为暂存分支。

当最新更改准备好投入生产时,可以将过渡分支拖放到生产分支上,以便在生产中合并和部署最新功能。

如果您足够大胆,也可以将开发分支合并到生产分支中。这只是意味着您跳过通过过渡分支对生产数据进行更改的验证。

您可以将开发分支相互合并,也可以将过渡分支相互合并。

当然,您也可以直接在工作站上使用 :code:git merge 来合并您的分支。Odoo.sh 将在您的分支机构中推送新修订时收到通知。

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

如果在暂存分支中测试配置更改,并希望在生产中应用这些更改,则必须执行以下操作之一:

  • 在 XML 数据文件中写入配置更改,覆盖分支中的默认配置或视图,然后在其清单 (__manifest__.py) 中增加模块的版本,以便在将过渡分支合并到生产分支时触发模块的更新。这是提高开发可伸缩性的最佳实践,因为您将对所有配置更改使用 Git 版本控制功能,因此对更改具有可追溯性。

  • 通过复制/粘贴它们,将它们从暂存手动传递到生产数据库。

页卡

历史

您的分行历史概览:

  • 提交及其作者的信息,

  • 链接到平台的各种事件,例如阶段更改,数据库导入,备份还原。

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

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

邮件

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

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

命令

对容器的 shell 访问。您可以执行基本的 linux 命令 (:code:ls, :code:top), 并通过键入 :code: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>”_。

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

如果合并的提交仅更改某些代码而不进行上述修改,则 Odoo.sh 不会执行任何备份,因为容器和数据库都未被修改,因此平台认为这足够安全。当然,作为额外的预防措施,您可以在对生产源进行重大更改之前手动进行备份,以防出现问题(这些手动备份大约可以使用一周)。为避免滥用,我们将手动备份限制为每天 5 次。

导入数据库 功能接受以下格式的数据库存档:

  • 标准的Odoo数据库管理器,(适用于内部部署的Odoo服务器,下:/web/database/manager

  • Odoo在线数据库管理器,

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

  • :ref:`构建视图`中的 Odoo.sh 转储下载按钮 <odoosh-gettingstarted-builds>。</odoosh-gettingstarted-builds>

升级

Available for production and staging branches for valid projects.

设置

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

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

Behaviour upon new commit

对于开发和暂存分支,您可以在收到新提交时更改分支的行为。默认情况下,开发分支将创建新的生成,过渡分支将更新以前的生成(请参阅 :ref:’生产阶段<stage_production>’)。如果您正在使用的功能需要特定的设置或配置,这将特别有用,以避免在每次提交时都必须再次手动设置它。如果为过渡分支选择新建版本,则每次推送提交时,它都会从生产版本中生成一个新副本。从暂存到开发的分支将自动设置为“不执行任何操作”。

Modules installation

选择要为开发版本自动安装的模块。

../../../_images/interface-settings-modulesinstallation.png
  • *仅安装我的模块*将仅安装分支的模块。这是默认选项。排除了 :ref:子模块 <odoosh-advanced-submodules>

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

  • *安装模块列表*将安装此选项正下方的输入中指定的模块。这些名称是模块的技术名称,必须以逗号分隔。

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

自动化营销活动测试组件

对于开发分支,可以选择启用或禁用测试套件。默认情况下,它处于启用状态。启用测试套件后,您可以通过指定测试标记 :ref:’测试标记<开发人员/参考/测试/选择>’来限制它们。

Odoo版

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

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

  • 您可以选择自动从最新的错误,安全性和性能修复中受益。您的Odoo服务器的来源将每周更新一次。这是“最新”选项。

  • 您可以通过从日期列表中选择 Odoo 源来选择它们,从而将 Odoo 源固定到特定修订版。修订将在 3 个月后过期。当到期日期临近时,您将收到邮件通知,如果您之后不采取行动,您将自动设置为最新修订版。

Custom domains

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

  • 拥有或购买域名,

  • 在此列表中添加域名,

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

例如,要将 www.mycompany.com 与数据库 mycompany.odoo.com 相关联:

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

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

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

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

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

  • 升级、硬件故障或您希望在其他国家或大洲托管数据库后,数据库的 IP 地址可能会发生变化。

因此,由于 IP 地址的更改,裸域可能突然不再工作。

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

HTTPS/SSL

如果正确设置了重定向,平台将在一小时内自动生成一个带有“让我们加密<https://letsencrypt.org/about/>”_的SSL证书,您的域将通过HTTPS访问。

虽然目前无法在 Odoo.sh 平台上配置自己的SSL证书,但如果有足够的需求,我们正在考虑该功能。

SPF 和 DKIM 合规

如果您的用户电子邮件地址的域使用SPF(发件人策略框架)或DKIM(域密钥识别邮件),请不要忘记在您的域名设置中授权Odoo作为发送主机,以提高传出电子邮件的可传递性。有关 :ref:’SPF <email_communication/spf_compliant>’ 和 :ref:’DKIM <email_communication/dkim_compliant>’ 的文档中介绍了配置步骤。

警告

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

命令行管理程序命令

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

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

每个命令都可以在剪贴板中复制以在终端中使用,其中一些命令可以直接从 Odoo.sh 通过单击*run*按钮使用,在这种情况下,弹出窗口将提示用户以定义最终占位符,例如“”,“”<URL><PATH>,…</PATH></URL>

克隆

下载 Git 存储库。

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

克隆存储库 odoo/odoo

  • :code:--recurse-submodules:下载存储库的子模块。子模块中包含的子模块也会被下载。

  • :code:--branch:签出存储库的特定分支,在本例中为 master

run 按钮不可用于此命令,因为它应该在您的计算机上使用。

分叉

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

$ git checkout -b feature-1 master

基于分支 master 创建一个名为 feature-1 的新分支,然后将其签出。

$ 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 密钥<https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#generating-a-new-ssh-key>`_

  2. “将 SSH 密钥复制到剪贴板<https://help.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account>”_(仅应用步骤 1)

  3. 将复制的内容粘贴到您的配置文件SSH键,然后按“添加`

    ../../../_images/SSH-key-pasting.png
  4. 密钥应显示在下面

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

连接

要使用 ssh 连接到构建,请在终端中使用以下命令:

$ ssh <build_id>@<domain>

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

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

只要您对项目具有 :ref:’正确的访问权限 <odoosh-gettingstarted-settings-collaborators>’,您将被授予对生成的 ssh 访问权限。</odoosh-gettingstarted-settings-collaborators>

注解

不能保证长时间运行的 ssh 连接。空闲连接将断开连接以释放资源。

子模块

将当前分支中另一个存储库中的分支添加为 子模块

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

子模块功能在本文档的 :ref:Submodules <odoosh-advanced-submodules> 一</odoosh-advanced-submodules>章中有详细说明。

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

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

$ git commit -a

提交所有当前更改。

$ git push -u origin master

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

删除

从存储库中删除分支。

$ git push origin :master

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

$ git branch -D master

删除存储库的本地副本中的分支。