2017年,Odoo发布了Odoo.sh,一个全新的云端服务。Odoo.sh是一个让测试、部署和Odoo实例监控都尽可能简单的平台。本章中,我们将来看Odoo.sh的运作方式,以及何时应使用它来代替其它部署选项及其功能。

本章中,我们将讲解如下小节:

  • 探讨Odoo.sh的一些基本概念
  • 创建一个Odoo.sh账户
  • 添加和安装自定义模块
  • 管理分支
  • 访问调试选项
  • 获取你的实例的备份
  • 查看你的构建的状态
  • Odoo.sh的所有选项

📝注:本章假定你能使用Odoo.sh。这是一个付费服务,你需要订阅码来访问该平台。如果你是一个Odoo合作伙伴,可以获取到免费的Odoo.sh订阅码。否则需要通过https://www.odoo.sh/pricing来进行购买。即使你没有订阅码也可以学习本章,其中有大量的截图可帮助你了解这个平台。

技术准备

本章中使用的所有代码可通过GitHub仓库进行下载:https://github.com/PacktPublishing/Odoo-14-Development-Cookbook-Fourth-Edition/tree/master/Chapter20/00_initial_module

探讨Odoo.sh的一些基本概念

本节中,我们将来了解一些Odoo.sh平台的功能。并解答一些基础问题,如应在何时使用它,以及其原因。

什么是Odoo.sh?

Odoo.sh是一个提供能够托管带自定义模块的Odoo实例的云端服务平台。简单地说,这是Odoo的平台即服务PaaS)云解决方案。它完全集成了GitHub。任何带有效Odoo模块的GitHub仓库可以在几分钟内在Odoo.sh上启动。你可以通过同时测试多个分支来查看开发进度。一旦将实例迁移至生产环境,可以通过生产数据库的拷贝来测试一些新功能,这有助于避免回退。它还会进行每日备份。通过Odoo.sh,你可以有效地部署Odoo实例,即使你对DevOps一窍不通。它会自动使用最优配置来设置Odoo实例。注意Odoo.sh使用的是Odoo企业版。你无法使用Odoo社区版,因为Odoo.sh只会加载企业版。

为什么要引入Odoo.sh?

在引入Odoo.sh之前,有两种托管Odoo实例的方式。第一种是使用在线Odoo,是一种软件即服务SaaS)云端服务。第二种方式是自有主机选项,这时你需要自己托管Odoo实例并在自己的服务器上进行配置。这两种方式都各有优缺点。使用在线Odoo选项,你无需执行任何配置或部署,因为它是一种SaaS服务。但是,你无法在这个平台上使用自定义模块。另一方面,通过自有主机选项,你可以使用自定义模块,但是需要自己完成所有事务。你需要购买服务器、配置数据库和NGINX、设置邮件服务器、每日备份以及安全配置。

出于这一原因,出现了对既提供在线Odoo的易用性又拥有自有主机的灵活性的新选项的需求。Odoo.sh让你无需进行复杂配置即可使用自定义模块。它还提供了一些附加功能,如测试分支、预发布分支和自动化测试。

📝注:使用在线Odoo无法进行自定义并非完全属实。通过Odoo Studio和其它技术,你可以进行自定义。但自定义的范围相对较小。

何时应使用Odoo.sh?

如果你无需自定义或者仅需在在线Odoo中进行少量的自定义,应该继续使用在线Odoo。这样可以既节省时间又节约成本。而如果你希望进行大量的自定义并且有专业DevOps工程师的协助,那么应选择自有主机选项。Odoo.sh适合那些对Odoo自定义有着良好的掌握而又没有DevOps专业知识的人。通过Odoo.sh,无需执行复杂的配置,你可以马上就开始使用,并进行自定义。它甚至已经配置好了邮件服务。

在你使用敏捷方法开发大型项目时Odoo.sh会有很大的帮助。这是因为在Odoo.sh中,你可以同步测试多个开发分支并在几分钟内在生产环境上部署稳定的开发版。你甚至可以将测试开发内容分享给终端用户。

Odoo.sh有哪些功能?

Odoo投入了大量的时间来开发Odoo.sh平台,因此它内置了很多的功能。让我们了解一下Odoo.sh的功能。注意Odoo会不时地新增功能。本节中,我讨论的是在编写本书时可以使用的一些功能,但你可能还会发现一些其它功能:

  • GitHub集成:这个平台完全集成了GitHub。你可以在这里测试所有的分支、拉取或提交。对于每个新提交,会自动拉取新分支。它还会为新提交运行自动化测试。你甚至可以通过Odoo.sh用户界面本身创建/合并分支。
  • Web shell:Odoo.sh在浏览器中为当前构建(或生产服务器)提供网页shell。在这里,你可以查看所有模块和日志。
  • 网页代码编辑器:如同网页shell,Odoo.sh在浏览器中提供了代码编辑器。在这里,你可以访问所有的源代码并获取对当前构建的Odoo交互shell。
  • SSH访问:通过注册你的公钥,你可以通过SSH连接到任意容器。
  • 外部依赖:你可以安装任意Python包。实现这点,你只需在GitHub仓库的根目录中添加requirement.txt。当前仅能安装Python包,无法安装系统包(apt包)。
  • 服务日志:你可以通过浏览器访问每个构建的服务日志。这些日志是实时的,你还可以通过这里过滤日志。
  • 自动化测试:Odoo.sh提供自己的runbot,你可以使用它来对你的开发执行一系列自动化测试。在添加新提交或新开发分支时,Odoo.sh会自动运行所有测试用例并显示测试的状态。你可以访问完整的测试日志,这有助于在测试用例失败时发现问题。
  • 预发布及开发分支:Odoo.sh提供两种类型的分支:开发分支和预发布分支。在开发分支中,你可以测试带有演示数据的开发中代码。预发布分支用于开发结束后、在合并到生产分支前进行功能测试。预发布分支并不会加载演示数据,取而代之的是它使用生产服务器的一份拷贝。
  • 邮件服务:Odoo.sh自动为生产服务器设置好邮件服务。如同在线Odoo一样,Odoo.sh无需对email的任何额外配置,但你也可以使用自己的邮件服务器。
  • 邮件捕捉器:预发布分支使用生产数据库的拷贝,因此它拥有真实客户的信息。在这类数据库中测试会让其能够向真实客户发送邮件。为避免这一问题,仅会在生产分支中激活邮件功能。预发布和开发分支不会发送真实邮件,而是使用邮件捕捉器,这样你可以在预发布和开发分支中测试并查看邮件。
  • 分享构建:通过Odoo.sh,你可以把开发分支分享给客户,让他们可以在新功能合并到生产环境前进行测试。
  • 更快速的部署:因Odoo.sh完全集成了GitHub,你可以在浏览器中通过简单的拖拽操作合并及部署开发分支。
  • 备份和还原:Odoo.sh保留生产实例的完整备份。你可以通过几次点击来下载或还原任意备份。参见获取你的实例的备份一节来学习更多有关备份的知识。Odoo.sh保留最多3个月的14个完整备份:7天的日备份、4周的周备份以及3个月的月备份。
  • 社区模块:你可以通过几次点击来测试安装任意社区模块。你还可以通过应用商店直接测试免费模块。

创建一个Odoo.sh账户

本节中,我们将创建一个Odoo.sh账户以及一个针对自定义插件的空仓库。

准备工作

学习本节,你会需要一个用于添加自定义模块的GitHub账户。你还将需要一个Odoo.sh订阅码。如果你是Odoo官方合作伙伴,你将可以获取到免费的Odoo.sh订阅码。否则,你需要通过https://www.odoo.sh/pricing来进行购买。

如何实现…

按照如下步骤来创建一个Odoo.sh账户:

  1. 打开https://www.odoo.sh并点击顶部菜单中的Sign in。这会将你重定向到GitHub页面:

    图19.1 – GitHub认证

  2. 进行仓库的授权,然后会重定向回到Odoo.sh。填写表单来部署实例:

    图19.2 – 创建一个Odoo.sh实例

  3. 这会部署实例并重定向到Odoo.sh控制面板。等待构建状态成功,然后,你可以通过下图中显示的CONNECT按钮连接到你的实例:

    图19.3 – 连接到开发实例

点击CONNECT后,你将自动登录到你的实例。如果你是管理员,通过点击旁边的箭头按钮,你还可以以其他用户的身份连接。

运行原理…

Odoo.sh平台与GitHub相集成。你需要对Odoo.sh进行完全授权,这样它才能访问到你的仓库。Odoo.sh还会创建webhook。GitHub webhook会在有新提交或仓库中新增了分支时通知Odoo.sh平台。初次登录时,Odoo.sh会将你重定向到GitHub。GitHub会显示一个类似第1步截图中的页面,其中你需要对所有的公有和私有仓库进行授权访问。如果你不是仓库的所有者,会看到向所有者请求访问权限的按钮。

在对Odoo.sh授予仓库权限之后,你将会被重定向回到Odoo.sh,这里你可以看到部署Odoo实例的表单。需要添加如下信息来创建新实例:

  • GitHub仓库:这里你需要设置带有自定义模块的GitHub仓库。该仓库中的模块都将对Odoo实例可用。你将看到一个已有仓库列表。可以选择其中的一个或创建一个新仓库。
  • Odoo版本:选择你想要部署的Odoo版本。你可以从当前支持的Odoo LTS版本中进行选取。确保所选取的版本与GitHub仓库中的模块相兼容。就我们的示例,我们将选择版本14.0。
  • 订阅码:这是实例的激活码。你会在购买Odoo.sh方案后通过邮件接收到订阅码;如果你是Odoo官方合作伙伴,可以找Odoo要订阅码。
  • 托管位置:这里你需要根据地理位置来选择服务器的位置。距离最近的服务器可以给到最好的性能。托管位置下方显示的延迟是基于你的位置的。因此如果你是为客户创建实例并且客户在其它国家,你需要选择距客户所在位置附近延迟较低的服务器。

一旦提交了这个表单,你的Odoo实例会进行部署并且你会被重定向到Odoo.sh控制面板中。这里你将可以看到第一个构建。构建会花费几分钟,然后你就可以连接到自己的Odoo实例了。如果查看左侧的面板,你会看到在生产和预发布版块中没有分支,只在开发版块中有一个分支。在接下来的几个小节中,我们将学习如何创建预发布和生产分支。

扩展知识…

目前Odoo.sh仅能配合GitHub使用。尚不支持其它版本控制系统,如GitLab和Bitbucket。如果想要使用GitHub以外的系统,可以使用中间GitHub仓库,通过子模块关联到你的实际仓库。未来,Odoo会支持GitLab以及Bitbucket,但按照Odoo官方的说法这在当前的优先级不高。这里所推荐的方法只是在你想要使用GitLab或Bitbucket时的一种变通方式。

添加和安装自定义模块

如同在探讨Odoo.sh的一些基本概念一节中所述,在Odoo.sh平台中,你可以添加自定义的Odoo模块。这个平台集成了GitHub,因此在已注册的仓库中添加新的提交会在对应的分支中新建构建。本节中,我们将在自己的仓库中添加自定义模块并在Odoo.sh中访问该模块。

准备工作

本例中我们将选择第十八章 自动化测试用例中的my_library模块。在本节中你可以使用任意有效Odoo模块,但这里我们会使用带有测试用例的模块,因为Odoo.sh平台会自动执行所有的测试用例。为进行简化,我们在本书GitHub仓库的Chapter20/r0_initial_module/my_library中添加了这一模块。

如何实现…

按照如下步骤来对Odoo.sh添加你自己的自定义模块:

  1. 在本地机器获取你的git仓库,在其中添加my_library模块,然后执行如下命令来将该模块推到GitHub仓库中:

    git add .
    git commit -am"Added my_library module"
    git push origin master
    
  2. 在Odoo.sh中打开你的项目。此处,你会发现针对这次提交的新构建。它会开始运行测试用例并会出现下图的内容:

    图19.4 – 图书模块的新构建

  3. 在从你的Odoo.sh项目中拉取了新提交后,你可以在右侧看到安装的进度。等待安装完成,然后通过点击绿色的CONNECT按钮来访问你的实例。它会打开安装有my_library模块的Odoo实例:

    图19.5 – 已安装的图书模块

访问并测试my_library模块。注意这不是一个生产构建,因此你可以按喜欢的方式进行测试。

运行原理…

在第1步中,我们在GitHub仓库中上传了my_library模块。通过webhook,Odoo.sh会马上收到这些修改的通知。然后Odoo.sh会开始构建新实例。它会安装你的所有自定义模块及其依赖。新构建会自动对已安装的模块执行测试用例。

📝注:默认Odoo.sh仅会安装你的自定义模块及它们的依赖。如果你想要修改这一行为,你可以通过全局设置中的模块安装版块来进行。我们将在下面的几节中深入地讲解这些设置。

HISTORY标签中,你将能够查看分支的完整历史记录。此处,你可以找到有关这个构建的基本信息。它会显示提交信息、作者信息和提交的GitHub链接。在右侧,你会获取到构建的实时进展。注意这些在开发版块中的构建将使用演示数据安装模块。在接下来的几个小节中,你将详细看到生产、开发和预发布分支之间的区别。

在一次成功构建后,你会看到一个连接到该实例的按钮。默认,你将通过admin用户来进行连接。使用CONNECT下拉菜单,可以转而使用demo和门户用户来进行登录。

扩展知识…

Odoo.sh会为每个新的提交创建一个新的构建。可以在分支的SETTINGS标签中修改这一行为:

图19.6 – 开发分支选项

此处你可以找到若干选项。其中一个是Behavior upon new commits。它有三个可选值:

  • New Build:这个选项会为每次提交创建一个新的构建。
  • Do Nothing:这个选项会忽略新提交,不执行任何操作。
  • Update Previous Build:这个选项会为新提交使用已有的构建。

Module installationTest suite选项将帮助你控制测试套件。你可以禁用测试,也可以使用这些选项来运行特定的测试用例。

管理分支

在Odoo.sh中,你可以配合生产分支创建多个开发和预发布分支。本节中,我们将创建不同类型的分支并查看它们之间的不同。你将了解如何开发、测试和部署新功能的完整工作流。

准备工作

访问https://www.odoo.sh/project并打开我们在创建一个Odoo.sh账户一节中所创建的项目。我们将创建一个针对新功能的开发分支,然后在预发布分支中进行测试。最后,我们将在生产分支中合并这一功能。

如何实现…

本节中,我们将在Odoo.sh中创建所有类型的分支。此时我们在生产环境中没有任何分支,因此我们会先创建一个生产分支。

创建生产分支

现在,我们在Development版块中只有一个main分支。main分支的最后一次构建显示一个绿色标签Test: success,意思是所有的自动化测试用例都成功运行了。我们可以将该分支移到Production分支中,因为测试用例状态显示一切正常。为将main分支移到Production分支中,你只需将main分支从Development版块拖拽到Production版块即可,如下图所示:

图19.7 – 将main分支移到Production

这会创建你的Production分支。可以通过右侧的Connect按钮访问Production分支。一旦你打开了生产实例,会注意到在生产数据库中没有安装应用。这是因为生产实例要求你或你的终端客户根据需求安装并配置操作。注意这是生产实例,因此为保持该实例运行,你需要输入企业订阅码。

创建开发分支

你可以直接通过浏览器创建开发分支。点击Development版块旁边的加号(+)按钮。这会显示两种类型的输入。一种是要fork的分支,另一个是开发分支的名称。在填写完后,点击Enter键。

这会通过fork给定分支来新建分支,如下图所示:

图19.8 – 创建一个新的开发分支

📝注:如果你不想通过用户界面创建开发分支,可以通过GitHub直接进行创建。如果在GitHub仓库中添加了一个新分支,Odoo.sh会自动新建一个开发分支。

开发中的分支通常是新功能分支。作为示例,我们将在library.book模型中新增字段。按照如下步骤来在图书模型中新增HTML字段:

  1. 在声明文件中提升模块版本:

    ...
    'version': '14.0.2',
    ...
    
  2. library.book模型中新增字段:

    ...
    color = fields.Integer()
    description = fields.Html()
    
    def make_available(self):
    ...
    
  3. 在图书的表单视图中新增一个description字段:

    ...
        </group>
        <notebook>
          <page string="Description">
            <field name="description"/>
          </page>
        </notebook>
      </sheet>
    ...
    
  4. 通过在终端中执行如下命令推送功能分支中的修改:

    git commit -am"Added book description"
    git push origin feature-branch
    

这会在Odoo.sh中新增一个构建。在成功构建后,你可以通过访问该实例测试这个新功能。你将能够在图书的表单视图中看到一个新的HTML字段。注意这个分支为开发分支,因此新功能仅在该分支中可用。你的生产分支并未进行任何修改。

创建预发布分支

一旦你完成了开发分支并且测试用例已成功运行,可以将该分支移到Staging版块中。这是预发布版块。在这里,新功能将通过生产数据库的拷贝来测试。这有助于我们发现在生产数据库中可能产生的问题。要从开发分支移到Staging分支,只需要将该分支拖拽到Staging版块中即可:

图19.9 – 将开发分支移到Staging

一旦你将Development分支移到Staging版块中,就可以使用生产数据测试新的开发代码了。如同其它的构建一样,你可以通过右侧的CONNECT按钮访问Staging分支。本例中唯一的不同是你将可以查看生产数据库中的数据。此处开发模块仅在你在声明文件中增加了模块版本号之后才会自动更新。

📝注:预发布分支将使用生产数据库的拷贝,因此预发布实例会拥有真实的客户和邮箱。出于这一原因,在预发布分支中会禁用真实的邮件,来避免在测试预发布分支的新功能时误发送邮件给客户。

如果你还没修改模块版本,则需要手动升级模块来查看新功能。

在生产分支中合并新功能

在通过生产数据(预发布分支中)测试了新的开发之后,可以将新开发部署到Production分支中。和此前一样,你只需要从Staging分支拖拽到Production分支中。这会将新功能分支合并到main分支中。如同Staging分支,开发模块仅在声明文件中增加了模块版本号时才会自动更新。之后,这个新模块即对终端客户可用:

图19.10 – 将修改合并到生产分支

一旦你将预发布分支拖放到Production,会显示一个弹窗提供两个选项:

  • Rebase and Merge:这会创建一个pull request并通过rebase方式合并,这样你将拥有线性的提交历史。
  • Merge:这会创建一个合并提交,不使用快进合并。

运行原理…

在前面的示例中,我们执行了部署新功能到生产环境的完整工作流。如下列表讲解了Odoo.sh中不同类型分支的用途:

  • 生产分支:这是由终端用户所使用的实际实例。仅有一个生产分支,新功能都将合并到这个分支中。在该分支中,邮件服务是启用的,因此你的终端用户可以发送和接收邮件。该分支也启用了每日的备份。
  • 开发分支:这个类型的分支显示所有的进行中开发。你可以创建无限多的开发分支,并且该分支中的每个新提交会触发一次新的构建。这个分支中的数据库加载有演示数据。在开发完成之后,这个分支会被移到预发布分支。这些分支中的邮件服务并未启用。
  • 预发布分支:这是工作流的中间阶段。稳定的开发代码会移到预发布分支来使用生产分支的数据库拷贝进行测试。这在开发的生命周期中是一个非常重要的步骤:可能存在在开发分支能正常运行的功能在生产数据库中的运行结果却与预期不同。预发布分支给了大家在部署到生产分支之前使用生产数据库测试功能的机会。如果你在该分支中发现了任何与开发相关的问题,可以将该分支移回到开发分支。预发布分支的数量与所购买的Odoo.sh方案有关。默认仅能有一个预发布分支,但在需要时可以购买更多。

这是如何将新功能合并到生产分支中的完整工作流。下一节中我们将了解这些分支中可以使用的其它选项。

访问调试选项

Odoo.sh提供了针对分析和调试的不同功能。本节中,我们将探讨所有这些功能和选项。

如何实现…

我们将在本节中使用相同的Odoo.sh项目。每个选项将在不同的版块中显示,并带有截图。

分支历史

读者已经在前面的小节中了解到这一功能。HISTORY标签显示完整的分支历史。你可以通过这里连接相应的构建:

图19.11 – HISTORY标签

HISTORY标签中,你可以查看对选定分支执行的所有过去操作。它会显示日志、合并、新提交和数据库还原。

邮件捕捉器

预发布分支使用生产数据库的拷贝,因此它拥有客户的信息。测试预发布分支可能会向真实客户发送邮件。这也是为什么邮件功能仅在生产分支中启用。预发布和开发分支不会发送真实邮件。如果想要在部署功能到生产分支前测试邮件系统的话,可以使用邮件捕捉器来查看所有发出邮件的列表。在预发布分支和开发分支中均可使用邮件捕捉器。

邮件捕捉器会显示邮件的发送源和附件,如下图所示:

图19.12 – 邮件捕捉器

MAILS标签中,你可以查看所有捕获的邮件及其附件的列表。注意MAILS标签仅在预发布和开发分支中显示。

网页Shell

通过SHELL标签,可以访问网页shell。此处你可以访问到源代码、日志、文件存储等等。它通过nano和Vim等编辑器提供所有的shell功能。你可以通过pip来安装Python包并维护多个标签。

查看下图,你可以通过点击SHELL来访问网页shell:

图19.13 – 网页Shell

通过shell访问,你可以在不同目录之间遍历并执行操作。你还可以使用pip命令来安装Python包。

以下是根目录下的目录结构:

.
├── data
│   ├── addons
│   ├── filestore
│   └── sessions
├── logs
├── Maildir
│   ├── cur
│   ├── new
│   └── tmp
├── repositories
│   └── git_github.com_pga-odoo_odooshdemo.git
├── src
│   ├── enterprise
│   ├── odoo
│   ├── themes
│   └── user
└── tmp

这些目录会根据分支类型而有所不同。例如,Maildir 仅在预发布和开发分支中可用,因为它们使用邮件捕捉器。

有时你需要从shell重启服务器或更新模块。你可以在shell中使用如下命令重启服务器:

odoosh-restart

要更新模块,在shell中执行如下命令:

odoo-bin -u my_library --stop-after-init

上面的命令会更新my_library模块。如果你想要更新多个模块,可以传递以逗号分隔的模块名。

代码编辑器

如果你不习惯使用shell访问,Odoo.sh还提供了一个全功能的编辑器。这里你可以访问Python shell、Odoo shell和终端命令行。你还可以通过此处编辑源代码,如下面的截图所示。在修改了源代码之后,可以通过顶部的Odoo菜单重启服务:

图19.14 – 网页代码编辑器

如上面的截图所示,你可以通过编辑器来更新文件。Odoo会自动检测修改并重启服务。注意如果你修改了数据文件,则需要更新模块。

日志

通过LOGS标签栏,可以访问实例的所有日志。你可以无需重载页面就查看到实时日志。可以通过此处过滤日志。这有助于查找生产服务器中的问题。以下是在LOGS标签中可以查找到的不同日志文件:

  • install.log:这是在安装模块时所生成的日志。所有的自动化测试用例的日志会放在这里。
  • pip.log:你可以通过requirement.txt文件添加Python包。在这个日志文件中,你可以看到这些Python包的安装日志。
  • odoo.log:这是常规的Odoo访问日志。在这里你会发现完整的访问日志。应当查看这个日志来检查生产环境中的错误。
  • update.log:在使用不同的声明文件版本上传新模块时,模块会进行自动更新。该文件包含这些自动更新的日志。

参见下图。它会显示生产分支的实时日志:

图19.15 – 服务日志

上面的截图显示日志是实时的,因此你可以无需重载页面就查看到新日志。此外,你还可以通过界面右上角的文本框搜索特定日志。

扩展知识…

一些常用的git命令在模块的顶部可以使用,如下图所示。你可以通过使用左侧的Run按钮来运行它们。这些命令无法进行编辑,但如果你想要运行修改后的命令,可以从这里拷贝命令并在shell中运行:

图19.16 – Git命令

如上面的截图所示,你可以在shell中执行这些git命令来执行各种操作。

获取你的实例的备份

备份是生产服务器的基础操作。Odoo.sh提供了内置的备份工具。本节中我们将演示如何通过Odoo.sh下载及还原备份。

如何实现…

在生产分支中,你可以通过顶部的BACKUPS标签访问到所有有关备份的信息。这会显示一个备份列表:

图19.17 – 备份管理器

通过顶部的按钮,你可以执行一些备份操作,如下载dump、执行手动备份或从备份还原。数据库备份可能需要较长时间,因此它会在后台完成。在完成后你会在顶部的铃铛图标处收到通知。

运行原理…

Odoo每日自动对生产实例进行备份。Odoo还在每次你合并一个新开发分支及更新模块时进行自动备份。你也可以通过顶部的按钮进行手动备份。

Odoo.sh总共保留最多3个月的Odoo生产实例的14个完整备份——7天的日备份、4周的周备份以及3个月的月备份。通过BACKUPS标签,你可以访问1个月的备份(7个日备份和4个周备份)。

如果你通过自有主机或在线Odoo迁移到Odoo.sh,可以使用Import Database按钮导入数据库。如果直接在生产分支中导入数据库,可能会产生问题。为避免这一问题,应首先在预发布分支中导入数据库。

查看你的构建的状态

每当你进行新提交时,Odoo.sh都会创建新的构建。它还会执行自动化测试用例。要管理所有这些,Odoo.sh有其自己的runbot。本节中,我们将查看所有构建的状态。

如何实现…

点击顶部的Builds菜单来打开构建列表。这里你可以查看所有分支和它们的提交的完整概览:

图19.18 – 构建状态

通过点击Connect按钮,你可以连接到实例。可以通过分支的背景色来查看构建的状态。

运行原理…

在runbot界面中,你可以对构建进行更多的控制。可以通过这里连接到之前的构建。不同的颜色显示了构建的状态。绿色表示一切正常;黄色表示警告,可以忽略,但推荐进行修复;红色表示严重问题,需要在将开发分支合并到生产分支前进行修复。红色和黄色的分支在Connect按钮旁显示感叹号图标(!)。点击它会弹出错误和警告日志。通常,你需要搜索安装日志来查找错误和警告日志,但这个弹窗会过滤掉其它日志,仅显示错误和警告日志。这意味着每当构建变红或黄时,你应当到这里来在合并到生产分支前修复这些错误和警告。

非活跃开发分支会在一段时间后被销毁。通常,添加新的Commit时会新建一个构建。如果想不进行新提交就重新激活这个构建的话,你可以使用左侧的Rebuild按钮。预发布分支的构建也会在一段时间后被销毁,除了最后一个会保持激活状态。

扩展知识…

通过顶栏中的Status菜单,可以查看实例的整体统计数据。平台上的各服务都有持续的监控。在Status界面,你可以查看到服务可用性的统计数据,这会通过平台的监控系统自动进行计算。它会显示包含服务器运行时间的数据。Status页面会显示服务器的输入和输出数据。Status页面会显示如下信息:

图19.19 – Odoo.sh状态

Status标签中显示的数据来自Odoo.sh使用的各种监控工具。

Odoo.sh的所有选项

Odoo.sh在Settings菜单下提供了一些其它的选项。本节中,你将学习用于在平台上修改特定事项默认行为的所有重要选项。

准备工作

我们将使用与前面小节相同的Odoo.sh项目。你可以通过顶栏中的Settings菜单来访问所有的Odoo.sh设置。如果你无法查看这个菜单,那么表示你正在访问一个共享项目并且没有管理员权限。

如何实现…

通过顶栏中的Settings菜单打开设置页面。我们会在下面的版块中来查看各个选项。

项目名

你可以通过这个选项修改Odoo.sh项目的名称。输入框中的项目名称将用于生成你的生产URL。开发构建也使用这个项目名称来作为前缀。在本例中,我们的功能分支的URL会类似https://parthgajjar-odooshdemo-feature-branch-260887.dev.odoo.com

图19.20 – 修改项目名

📝注:这个选项会修改生产URL,但不能去除掉*.odoo.com。如果你希望在自定义域名上运行生产分支,可以在生产分支的Settings标签中添加自定义域名。你还需要在自己域名的DNS管理器中添加一个CNAME记录。

协作者

可以通过添加协作者来分享项目。此处,你可以通过他们的GitHub ID来搜索和添加一个新协作者。协作者可拥有AdminUser访问权限。具有管理员访问权限的协作者可以进行所有(包含设置)的访问。而具有用户权限的协作者将会拥有受限的访问权限。他们可以看到所有构建,但无法访问生产或预发布分支的备份、日志、shell或email,但他们具有开发分支的所有访问权限:

图19.21 – 添加协作者

📝注:你还需要对这些用户授予GitHub仓库的访问权限;否则他们将无法通过浏览器新建仓库。

对公访问

使用这个选项,你可以与终端用户分享构建。这可用于演示或测试。实现这点,你需要启用Allow public access复选框:

图19.22 – 授予构建的公开访问

注意预发布分支和生产分支有着相同的密码。但是在开发分支中,你将拥有如下表中所示的用户名和密码:

表19.1

模块安装

在开发分支的Settings标签中,你会看到针对开发分支的Module installation选项。它提供三个选项,如下图所示:

图19.23 – 模块安装选项

默认设置为Install only my modules。这个选项会在新的开发分支中安装所有你自己的自定义模块及它们的依赖模块。自动化测试用例仅针对这些模块执行。第二个选项是Full installation。这个选项安装所有模块并对所有这些模块执行自动化测试用例。最后一个选项是Install a list of modules。在这个选项中,你需要传递一个逗号分隔的模块列表,如salespurchasesmy_library。这个选项会安装给定的模块及它们的依赖。

这个设置仅应用于开发构建。预发布构建复制生产构建,因此它们会有在生产分支中安装的相同模块,并对在声明文件中拥有更新版本的模块执行测试用例。

子模块

Submodules选项在你使用私有模块作为子模块时使用。这一设置仅需对私有子模块使用;公有子模块可以正常运行,没有任何问题。无法公开下载私有仓库,因此你需要给Odoo.sh该仓库的访问权限。按照如下步骤来对私有子模块添加访问权限:

  1. 在输入框中复制私有子模块仓库的SSH URL并点击Add
  2. 复制所显示的public key
  3. 在GitHub私有仓库的设置中添加这一公钥作为部署密钥(Bitbucket和GitLab中也有类似的设置):

图19.24 – 设置私有子模块

你可以添加多个子模块,也可以从这里删除子模块。

数据库Worker

你可以在生产构建中增加worker的数量。这在拥有更多用户时会非常有用。通常,单个worker可以处理25个后台用户或5,000个日网站访客。这个公式并不完美,根据使用情况会存在变化。这个选项并不是免费的,增加worker的数量会增加Odoo.sh订阅的费用:

图19.25 – 设置数据库Worker

这些Database Worker是多线程的,每一个可以处理15个并发请求。拥有足够的worker来对所有进入的请求进行服务非常有必要,但增加worker的数量并不会提升请求处理时间的速度。它仅用于处理大量的并发用户。

预发布分支

预发布分支用于使用生产数据库测试新的开发。默认Odoo.sh仅提供一个预发布分支。如果你运行一个拥有大量开发者的大型项目,这可能会成为开发过程中的瓶颈,因此你可以支付额外费用来增加Staging Branches的数量:

图19.26 – 设置预发布分支

扩展知识…

除了配置选项外,Settings菜单中还显示一些与平台相关的统计数据。

数据库大小

这一版块将展示你的生产数据库的大小。Odoo.sh平台对数据库的收费为$1/GB/月。这个选项有助于对你的数据库进行跟踪。所显示的数据库大小仅针对生产数据库,它不包含预发布和开发分支的数据库:

图19.27 – 数据库大小

Odoo源代码修订

这一版块将显示Odoo项目的GitHub修订版号码。它会显示针对社区版、企业版和在平台中当前使用的主题项目的修订版哈希。源代码每周会自动更新。这个选项有助于在本地机器上获取完全一致的版本。你还可以通过仓库中的git命令在网页shell中进行查看。