Sugarcrm支持产品指南糖开发人员糖开发人员指南10.0介绍发展方法

发展方法

概述

本页讨论了我们建议提高糖开发项目成功率的标准实践。 

发展最佳实践

When developing Sugar® customizations as part of an on-site CRM project implementation, we recommended placing the entire Sugar application filesystem under source code management. Sugar developers know that customizations made to Sugar are placed under the ./custom/ directory. But during the lifecycle of a CRM implementation, you will need to upgrade Sugar versions, which will change core files. Many projects will also need to track other related project files that may not all be Sugar platform code. For example, pre-flight SQL scripts, data migration scripts, Web server configuration settings, etc.

For SugarCloud projects and ISVs, if you are building a custom module package or integration designed to be installed into many Sugar instances (including SugarCloud instances), then tracking only ./custom/ directory files should be enough.

使用.gitignore文件

今天,许多开发人员选择使用 Git. 作为他们的来源控制管理。有一些糖应用程序文件您不想跟踪;大多数这些都是生成在运行时创建的文件,也是特定于糖实例的配置文件。

以下是您可以使用或适应您选择的源控制管理系统的示例.gitignore文件。

*.log
/cache
/config.php
/config_override.php
/.htaccess
/custom/application
/custom/history
/custom/modules/*/Ext
/custom/blowfish

开发团队的建议

代码质量对于维护很重要,因为糖自定义在与糖应用的其余部分相同的环境中运行。以下是一些最佳实践,以帮助开发团队维护代码质量。

  • 采用适当的GIT工作流程进行开发。供参考,请参阅亚特斯人的教程 git工作流选项.
  • 在将在Master中合并到Master之前进行测试以保持主稳定的功能分支中的开发。
  • 避免工作流程,涉及直接进入主分支的开发人员以防止代码不稳定。
  • 开发团队应始终在新代码中合并之前执行代码审查。

部署糖代码

您计划部署糖代码的位置是确定应如何部署糖代码以及应如何管理项目的最大因素。

您是否正在研究一个糖项目的糖项目?您是否在使用SugareXchange进行分发的自定义模块?您是否计划仅休息API集成?这些问题的答案指南如何应开发和部署糖代码。

  • 糖现场项目s :使用您计划在生产中使用的精确版本和味道的精确版本和味道开发这些自定义。
  • Sugarcloud项目s :开发这些自定义,以了解客户已购买的特定风味的糖。
  • 自定义模块或集成 :如果您打算通过通过许多糖客户分发您的定制 sugarexchange. 或渠道合作伙伴,用糖的云服务设计您的定制。
    • Sugar的Cloud Service比我们的有关支持的自定义的安装更严格。
    • Sugar现场实例可以支持为Sugar的云服务设计的自定义,但逆不总是如此。

有关糖的云服务限制的更多信息,请参阅 甘蔗政策指南.

包装

自定义包装不是许多糖项目的关注。许多项目只使用Git(或其他一些文件版本)来管理糖代码自定义的分发和部署。但是,有些情况是糖定制的包装是必要的。

如果您计划分发糖类自定义代码,那么您必须将您的自定义包装为一个 模块可加载包装 (包含所有自定义代码以及清单文件的.zip文件)。易于编写脚本来构建来自自定义目录内容的模块加载包,或通过从开发环境中提取自定义。请参阅github上的示例 这里这里.

在某些企业环境中,更改受到紧密控制的,并且各种糖应用程序组件的所有权可能会遍布多个团队,需要协调部署。例如,数据库管理员(DBA)可能负责实现数据库模式(DDL)更改,并且系统管理员可能负责实现文件系统的变化。

对于这些情况:

可以考虑文件系统更改,以便使用Git来确定当前生产状态和要部署的最新更改之间的差异。

可以通过部署Sugar生产实例的克隆和运行的克隆上部署最新的文件系统更改来计算DDL更改 快速修复 命令。 Sugar将提示您使用任何DDL更改,以便您可以捕获和与您的DBA分享。

如果需要,数据操作语言(DML)应在SQL或PHP脚本中进行管理。

部署

如果使用传统的基于Git的部署,则部署新的糖代码就像检查最新的分支然后运行一样简单 快速修复和重建。从糖用户界面运行快速修复,或 脚本 它是完全自动化的部署。

部署到Sugar云服务上的实例时,有必要使用手动安装包 模块加载器。无法将包部署到糖云服务的实例中。

In a coordinated deployment, database changes should be deployed first, followed by filesystem changes, followed by a Quick Repair (if permitted) to clear system caches. You can clear caches manually by deleting the contents of the ./cache/ directory and then truncate the metadata_cache table in the Sugar database. The Sugar application regenerates these caches as needed.

不建议使用Sugar Studio将更改部署到新环境(特别是生产)。使用Studio用户界面手动重新创建自定义可能会出错。它还运行风险无意中覆盖其他代码自定义。使用文件系统上的扩展手动创建自定义字段等可能初始较慢,但从长远来看,您可以从更好的更改管理和自动化中受益。

管理多个环境

CRMS是业务关键的应用程序,因此永远不会直接在生产环境上进行开发。典型的糖项目涉及多个分期环境以及每个糖开发人员用于实际编码的单独开发环境。

Sugarcrm推荐4种不同的环境:

  • 生产环境 : used by real users
  • 用户验收测试(UAT)环境 :业务利益攸关方用于签署投入生产的变更
  • 质量保证环境 :用于测试和验证新功能和错误修复
  • 开发环境 :由单独的糖开发人员使用来创建和测试代码(通常在本地笔记本电脑或PC上运行)

在不经过质量保证(QA)和用户验收测试(UAT)的情况下,不应允许从开发环境上游流出的代码更改。中间环境有助于在开发和生产之间有助于拦截出现问题。

在生产环境下面需要流下游的用户和CRM数据也应通过中间环境,以确保一致性,并且它被清除或匿名的任何个人可识别或敏感的信息。

一致性

保持尽可能多的一致性,这些环境中的每一个都是必不可少的。不一致的环境可以创建错误在一个环境中重现错误的问题,而不是其他环境(例如,仅在生产中出现的错误)。多次,这些错误追溯到与糖直接相关的配置参数或开发下的特征和自定义。

要尽可能准确地复制生产环境,我们建议您在开发和QA环境中使用VM或Container技术。

您的UAT环境应符合您的生产环境的基础设施。

Sugarcrm采用各种集装箱技术开发核心糖应用,用于糖项目。特别是,我们使用虚拟框,VMware,Amazon AMI,Docker容器,Vagrant和Packer。 Sugarcrm工程还使用傀儡来集中管理所有这些不同环境的配置和配置。

测试

Sugarcrm建议使用各种测试方法来确保糖项目的质量。执行单元测试,功能测试(手动或GUI自动化),系统集成测试,用户验收测试和性能测试。

  • 单元测试 应应用于确保即使应用程序中最小的代码单元也行为正常。
  • 功能测试 应执行以确保每个功能和功能的行为行为。
  • 系统集成测试 应执行以确保糖与外部系统共存,并成功地在所有这些系统之间流动。
  • 用户验收测试 应由主要利益相关者执行,以确保您的项目满足业务需求。
  • 性能测试 应该进行,以确保糖应用的响应能力符合用户期望,并且申请继续规模。

在我们的经验中,忽视任何这些测试可以在可维护性,客户满意度和商业成功方面对糖项目产生负面影响。 

在下一节中,我们介绍了一些工具和开源资源,可以帮助您启动项目的QA练习。

糖测试工具

对于糖客户和合作伙伴,Sugarcrm提供 测试工具 可用于验证和对糖自定义进行质量保证。使用糖测试技术需要熟悉 phpunit. 对于PHP单元测试, 茉莉花 对于JavaScript单元测试,和 Apache Jmeter. 用于性能负载测试。

糖单位测试

糖单元测试套件是在建造和释放每种新糖释放过程中的Sugarcrm工程开发和维护的自动单元测试。作为我们开发过程的一部分,这些测试必须在每个主释放分支中始终运行“绿色”(100%传递)。基本上,这些测试形成了在我们的受控建立环境中运行的糖的无法计算的糖的回归测试套件。

通过这种理解,这里是利用这些单元测试的推荐方法。

  • 在开发环境中运行测试套件,以建立基线的开发环境中的糖的无可溶性副本。并非所有测试都可以立即通过;由于您的开发环境与Sugarcrm工程控制的构建环境之间的配置差异,有些可能会失败。
  • 更正任何观察到的故障或跳过/删除故障测试以创建100%传递的基本测试套件。
  • 当您在Sugar上开发自定义时,请确保您的基础测试套件继续通过。
  • 为您创建的新代码自定义创建新测试。

糖性能测试

SugarCrm提供了一个名为的开源工具而不是从生产环境中消毒数据。 可用于生成伪随机数据以填充具有可表示数据的糖实例。

我们还为请求访问权限的糖客户和合作伙伴提供Apache Jmeter场景。这些JMeter场景可用于驱动糖的糖休息API接口的模拟负载。他们可以验证您的自定义,对糖类实例的性能没有意外影响。

德沃斯

为了促进和简化开发过程,糖建议实施Devops自动化。使用诸如 詹金斯 为了管理测试自动化,阶段在任何环境(DEV,QA,UAT和PROS)中的变化,用于手动验证,并管理从一个环境到下一个环境的促销。

  • 在每个提交上执行自动测试(例如单元测试)。
  • 阶段开发至少在QA或演示使用的夜间基础上发生变化。
  • 根据需要自动回滚任何环境的变化。
  • 每当测试失败时,或者构建无法部署,自动化受影响和负责任方的通知。

与工作室定制共存

Sugar Studio和Module Builder启用管理员用户来对糖环境进行快速更改。但是Sugar Studio缺乏严格的变化控制,更大的CRM项目需要。有时,工作室的变化甚至可以打破代码级糖自定义。因此,我们经常在严重定制的糖实例上劝阻工作室。

但是,如果Sugar Studio对CRM项目的重要前台要求,那么您可以使用策略来为您的自定义来避免冲突。

Sugar Studio可用于修改糖中大多数模块的布局,字段和关系。模块构建器可用于定义新模块以及其布局,字段和关系。在实践中,这意味着可以使用简单的管理工具自定义任何模块记录视图,列表视图,移动视图和子单位的字段和布局。

因此,Studio用户可能会在特定字段上依赖于依赖于特定字段或在特定布局或位置的字段中断的代码自定义。以下是一些实践,以避免工作室自定义和自定义代码之间的冲突:

  • 避免自定义记录,列表和子单位视图控制器,因为Studio用户可以更改影响控制器代码内预期的字段和布局。
  • 避免自定义记录验证,因为Studio用户可以更改影响验证代码内预期的字段和布局。
  • 避免依赖特定字段的硬编码集成,因为Studio用户可以更改影响集成内部期望的字段。
  • 避免新的字段和关系Vardefs自定义,因为工作室用户可以创建新的字段和关系。
  • 避免ViewDefs for Record,List和Subpanel布局的自定义,因为Studio用户执行这些自定义项。

许多自定义有与工作室自定义相关的副作用的风险较小。以下是管理员用户无法通过Studio执行的某些更改的列表:

  • 添加自定义dashlets.
  • 添加自定义布局或添加到页脚或标头
  • 在记录视图操作下拉列表中添加自定义操作
  • 添加在系统上发现字段和模块的元数据感知集成
  • 添加逻辑钩子

相反,某些自定义可以为Studio用户提供其他工具:

  • 添加自定义糖逻辑功能
  • 添加自定义糖字段类型

最后修改:2020-08-04 14:34:55