快速开发环境 rapid-development-environments

要部署更改,当前云开发环境需要使用采用称为CI/CD管道的广泛代码安全和质量规则的流程。 对于需要快速和反复更改的情况,Adobe引入了快速开发环境(简称RDE)。

RDE允许开发人员快速部署和审查更改,从而最大限度地减少测试经验证可在本地开发环境中工作的功能所需的时间。

在RDE中测试更改后,可以通过Cloud Manager管道将它们部署到常规云开发环境。

您可以看到其他演示视频 如何设置如何使用,和 开发生命周期 使用RDE。

简介 introduction

RDE可用于代码、内容以及Apache或Dispatcher配置。 与常规云开发环境不同,开发人员可以使用本地命令行工具将本地构建的代码同步到RDE。

每个项目均配备RDE。 如果存在沙盒帐户,则它们在处于非使用状态数小时后会休眠。

创建后,会将RDE设置为最新可用的Adobe Experience Manager (AEM)版本。 可以使用Cloud Manager执行的RDE重置会循环RDE并将其设置为最新可用的AEM版本。

通常,单个开发人员在给定时间使用RDE来测试和调试特定功能。 当开发会话完成后,RDE可以重置为默认状态以供下次使用。

可以为生产(非沙盒)程序许可其他RDE。

在程序中启用RDE enabling-rde-in-a-program

请按照以下步骤操作,以便您可以使用Cloud Manager为您的项目创建RDE。

  1. my.cloudmanager.adobe.com 登录 Cloud Manager 并选择适当的组织。

  2. 单击要向其添加RDE的程序以显示其详细信息。

  3. 从​ 程序概述 ​页面,单击​ 环境 ​信息卡上的​ 添加环境 ​以添加环境。

    环境信息卡

    • 添加环境 ​选项也可在​ 环境 ​选项卡上使用。

      “环境”信息卡

    • 添加环境 ​选项可能由于缺少权限或根据许可的资源而被禁用。

  4. 在出现的​ 添加环境 ​对话框中:

    • 选择 快速开发选择环境类型 标题。
      • 可用/已用环境的数量显示在环境类型后面的括号中。
    • 提供 名称 为了环境。
    • 提供一个可选的 描述 为了环境。
    • 选择​ 云区域

    添加环境对话框

  5. 单击​ 保存 ​来添加指定环境。

概述 屏幕中现在显示您的新环境 环境 卡片。

创建后,RDE将设置为最新可用的AEM版本。 也可以使用Cloud Manager执行的RDE重置会循环RDE并将其设置为最新可用的AEM版本。

有关使用Cloud Manager创建环境、管理谁有权访问这些环境以及分配自定义域的更多信息,请参阅 cloud Manager文档.

安装RDE命令行工具 installing-the-rde-command-line-tools

在使用Cloud Manager为程序添加RDE后,您可以通过设置命令行工具与其交互,如以下步骤所述:

IMPORTANT
确保您拥有最新版本的 节点和NPM已安装 以使Adobe I/OCLI和相关插件正常工作。
  1. 按照以下步骤安装Adobe I/OCLI工具 此处.

  2. 安装Adobe I/OCLI tools cloud manager插件,并按照所述对其进行配置 此处.

  3. 通过运行以下命令来安装Adobe I/OCLI工具AEM RDE插件:

    code language-none
    aio plugins:install @adobe/aio-cli-plugin-aem-rde
    aio plugins:update
    
  4. 为组织ID配置Cloud Manager插件:

    aio config:set cloudmanager_orgid 4E03EQC05D34GL1A0B49421C@AdobeOrg

    并将字母数字字符串替换为您自己的组织ID,您可以使用策略查找该ID 此处.

  5. 接下来,配置您的项目ID:

    aio config:set cloudmanager_programid 12345

  6. 然后,配置要将RDE附加到的环境ID:

    aio config:set cloudmanager_environmentid 123456

  7. 配置完插件后,请通过执行

    aio login

    成功登录时的响应应类似于下面的输出,但您可以忽略显示的值。

    code language-none
    ...
    You are currently in:
    1. Org: <no org selected>
    2. Project: <no project selected>
    3. Workspace: <no workspace selected>
    

    此步骤要求您是Cloud Manager的成员 开发人员 — Cloud Service 产品配置文件。 请参阅 此页面 以了解更多详细信息。

    或者,如果可以通过运行此命令登录到开发人员控制台,则可以确认您具有此开发人员角色:

    aio cloudmanager:environment:open-developer-console

    note tip
    TIP
    如果您看到 Warning: cloudmanager:list-programs is not a aio command. 错误,您必须安装 aio-cli-plugin-cloudmanager 通过运行以下命令:
    code language-none
    aio plugins:install @adobe/aio-cli-plugin-cloudmanager
    
  8. 通过运行验证登录是否成功完成

    aio cloudmanager:list-programs

    这应列出已配置组织下的所有程序。

有关更多信息和演示,请观看视频教程 如何设置RDE (06:24).

在开发新功能时使用RDE using-rde-while-developing-a-new-feature

Adobe建议通过以下工作流程来开发新功能:

  • 当达到中间里程碑并成功通过AEMas a Cloud ServiceSDK本地验证时,将代码提交到Git功能分支。 分支还不应是主行的一部分,但提交Git是可选的。 构成“中间里程碑”的因素因团队习惯而异。 示例包括几行新代码、半天的工作或完成一个子功能。

  • 如果RDE已由其他功能使用并且您希望 将其重置为默认状态. 重置需要几分钟时间,并且所有现有内容和代码都会被删除。 可以使用RDE状态命令确认RDE已就绪。 RDE将随最新的AEM发行版本一起提供。

    note important
    IMPORTANT
    如果您的暂存环境和生产环境未收到自动AEM版本更新,并且位于最新的AEM版本之后,则在RDE上运行的代码可能与暂存环境和生产环境中运行的代码不匹配。 在这种情况下,在将代码部署到生产环境之前,在暂存环境中对代码执行彻底测试尤为重要。
  • 使用RDE命令行界面,将本地代码同步到RDE。 选项包括安装内容包、特定捆绑包、OSGI配置文件、内容文件和Apache/Dispatcher配置的zip文件。 也可以引用远程内容包。 请参阅 RDE命令行工具 以了解更多信息。 可以使用status命令验证部署是否成功。 或者,使用包管理器安装内容包。

  • 在RDE中测试代码。 在Cloud Manager中,提供了作者和发布URL。

  • 如果代码的行为与预期不符,请使用标准调试技术了解问题并进行适当的更改。 无需将代码修改提交到Git(因为它们尚未验证),请使用本地CLI将代码同步到RDE。 不断迭代,直到问题得到解决。

  • 一旦代码按预期运行,将代码提交到Git功能分支。

  • 同步到RDE的代码不使用Cloud Manager管道,因此现在应使用Cloud Manager非生产管道将Git功能分支部署到云开发环境。 这将验证代码是否通过Cloud Manager质量关卡,并让您确信代码稍后可以使用Cloud Manager生产管道成功部署。

  • 对每个中间里程碑重复上述步骤,直到功能的所有代码准备就绪,并在RDE和云开发环境中正常运行。

  • 通过Cloud Manager生产管道将代码部署到生产环境中。

使用RDE调试现有功能 use-rde-to-debug-an-existing-feature

该工作流与开发新功能类似。 不同之处在于,同步到RDE的代码将反映推送到发现问题的环境的任何内容的Git标签。 此外,部署与上游环境匹配的内容可能很有用。 这可以通过导出和导入内容包来实现。

多位开发人员在同一个RDE上协作 multiple-developers-collaborating-on-the-same-rde

RDE一次支持一个项目。 由于代码从本地开发环境同步到RDE环境,因此对于一个开发人员而言,在给定时间自行使用代码是最自然的事情。

但是,通过仔细的协调,多个开发人员可以验证特定功能或调试特定问题。 关键是每个开发人员都会保持其本地项目的同步,以便特定开发人员所做的代码更改被其他开发人员吸收,否则,一个开发人员可能会无意中覆盖另一个开发人员的代码。 推荐的策略是,每个开发人员在同步到RDE之前将其更改提交到共享git分支,以便其他开发人员在做出自己的更改之前提取更改。

RDE命令行工具命令 rde-cli-commands

帮助/一般信息 help

  • 要获取命令列表,请键入:

    aio aem:rde

  • 有关命令的详细帮助,请键入:

    aio aem rde <command> --help

部署到RDE deploying-to-rde

本节介绍如何使用RDE CLI部署、安装或更新包、OSGI配置、内容包、单个内容文件以及Apache或Dispatcher配置。

一般使用模式为 aio aem:rde:install <artifact>.

您可以找到下面的一些示例:

部署内容包

aio aem:rde:install sample.demo.ui.apps.all-1.0.0-SNAPSHOT.zip

成功部署的响应类似于以下内容:

...
#1: deploy completed for content-package sample.demo.ui.apps.all-1.0.0-SNAPSHOT.zip on author,publish - done by 9E072FC75D54FE1A2B49431C@AdobeID at 2022-09-13T11:32:06.229Z

或者,您可以引用远程存储库:

aio aem:rde:install -t content-package "https://repo1.maven.org/maven2/com/adobe/aem/guides/aem-guides-wknd.all/2.1.0/aem-guides-wknd.all-2.1.0.zip"

默认情况下,工件会同时部署到创作层和发布层,但“ — s”标记可用于定位特定层。

可以部署任何AEM包,例如包含代码、内容或 容器包 (也称为“所有”包)。

IMPORTANT
WKND项目的Dispatcher配置不会通过上述内容包安装进行部署。 按照“部署Apache/Dispatcher配置”步骤单独部署它。

部署OSGI配置

aio aem:rde:install com.adobe.granite.demo.MyServlet.cfg.json

成功部署的响应类似于以下内容:

...
#2: deploy completed for osgi-config com.adobe.granite.demo.MyServlet.cfg.json on author,publish - done by 9E0725C05D54FE1A0B49431C@AdobeID at 2022-09-13T11:54:36.390Z

部署捆绑包

要部署捆绑包,请使用:

aio aem:rde:install ~/.m2/repository/org/apache/felix/org.apache.felix.gogo.jline/1.1.8/org.apache.felix.gogo.jline-1.1.8.jar

成功部署的响应类似于以下内容:

...
#3: deploy staged for osgi-bundle org.apache.felix.gogo.jline-1.1.8.jar on author,publish - done by 9E0725C05D53BE1A0B49431C@AdobeID at 2022-09-14T07:54:28.882Z

部署内容文件

要部署内容文件,请使用:

aio aem:rde:install world.txt -p /apps/hello.txt

成功部署的响应类似于以下内容:

..
#4: deploy completed for content-file world.txt on author,publish - done by 9E0729C05C54FE1A0B49431C@AdobeID at 2022-09-14T07:49:30.644Z

部署Apache/Dispatcher配置

对于此类配置,整个文件夹结构必须采用zip文件的形式。

dispatcher AEM项目模块中,您可以通过运行以下maven命令来压缩Dispatcher配置:

mvn clean package

或者,使用以下的zip命令 src 目录 dispatcher 模块:

zip -y -r dispatcher.zip .

然后使用此命令部署配置:

aio aem:rde:install target/aem-guides-wknd.dispatcher.cloud-X.X.X-SNAPSHOT.zip

TIP
上述命令假定您正在部署 WKND 项目的Dispatcher配置。 确保更换 X.X.X 使用相应的WKND项目版本号或特定于项目的版本号,部署项目的Dispatcher配置。
NOTE
RDE支持“灵活模式”Dispatcher配置,但不支持“旧版模式”Dispatcher配置。 请参阅 Dispatcher文档 以了解有关这两种模式的信息。 您还可以参阅以下文档: 迁移到灵活模式,如果您尚未这样做。

成功的部署会生成类似于以下内容的响应:

..
#5 deploy completed for dispatcher-config dispatcher.zip on author,publish - done by 9E0735C05T54FE1A0B49431C@AdobeID at 2022-10-03T10:26:31.286Z
Logs:
  Cloud manager validator 2.0.49
  2022/10/03 10:26:37 No issues found
  Syntax OK

部署到RDE的代码不通过Cloud Manager管道及其关联的质量审核。 但是,代码确实会执行一些分析,这些分析会报告错误,如下面的代码示例所示:

$ aio aem:rde:install ~/.m2/repository/org/apache/felix/org.apache.felix.gogo.jline/1.1.8/org.apache.felix.gogo.jline-1.1.8.jar
...
#19: deploy staged for osgi-bundle org.apache.felix.gogo.jline-1.1.8.jar on author,publish - done by 9E0725C05D74FR1A0B49431C@AdobeID at 2022-09-14T07:54:28.882Z
Logs:
The analyser found the following errors for author :
[requirements-capabilities] com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8: Artifact com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8 requires [org.apache.felix.gogo.jline/1.1.8] org.apache.felix.gogo; filter:="(&(org.apache.felix.gogo=command.implementation)(version>=1.0.0)(!(version>=2.0.0)))"; effective:=active in start level 20 but no artifact is providing a matching capability in this start level.
[api-regions-exportsimports] com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8: Bundle org.apache.felix.gogo.jline:1.1.8 is importing package(s) [org.jline.builtins, org.jline.utils, org.apache.felix.service.command, org.apache.felix.service.threadio, org.jline.terminal, org.jline.reader, org.apache.felix.gogo.runtime, org.jline.reader.impl] in start level 20 but no bundle is exporting these for that start level.
The analyser found the following errors for publish :
[requirements-capabilities] com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8: Artifact com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8 requires [org.apache.felix.gogo.jline/1.1.8] org.apache.felix.gogo; filter:="(&(org.apache.felix.gogo=command.implementation)(version>=1.0.0)(!(version>=2.0.0)))"; effective:=active in start level 20 but no artifact is providing a matching capability in this start level.
[api-regions-exportsimports] com.adobe.aem.temp:org.apache.felix.gogo.jline:1.1.8: Bundle org.apache.felix.gogo.jline:1.1.8 is importing package(s) [org.jline.builtins, org.jline.utils, org.apache.felix.service.command, org.apache.felix.service.threadio, org.jline.terminal, org.jline.reader, org.apache.felix.gogo.runtime, org.jline.reader.impl] in start level 20 but no bundle is exporting these for that start level.

上述代码示例说明了捆绑包无法解析时的行为。 在这种情况下,它是“暂存”的,并且仅在通过安装其他代码来满足其要求(在本例中缺少导入)时才进行安装。

基于站点主题和站点模板部署前端代码

NOTE
此功能尚未GA,但可由早期采用者使用。 请联系 aemcs-rde-support@adobe.com 以试用并提供反馈。

RDE支持基于的前端代码 站点主题站点模板. 对于RDE,这是使用命令行指令而不是Cloud Manager来部署前端包完成的 前端管道 用于其他环境类型。

与往常一样,使用npm构建前端软件包:

npm run build

它应生成 dist/ 文件夹,因此前端包文件夹应包含 package.json 文件和 dist 文件夹:

ls ./path-to-frontend-pkg-folder/
...
dist
package.json

现在,您可以通过指向前端包文件夹将前端包部署到RDE:

aio aem:rde:install -t frontend ./path-to-frontend-pkg-folder/
...
#1: deploy completed for frontend frontend-pipeline.zip on author,publish - done by ... at 2024-01-18T15:33:22.898Z
Logs:
> Deployed artifact wknd-1.0.0-1705592008-26e7ec1a
> with workspace hash 692021864642a20d6d298044a927d66c0d9cf2adf42d4cca0c800a378ac3f8d3

或者,您可以压缩 package.json 文件和 dist 文件夹并部署该zip文件:

zip -r frontend-pkg.zip ./path-to-frontend-pkg-folder/dist ./path-to-frontend-pkg-folder/package.json

aio aem:rde:install -t frontend frontend-pkg.zip
...
#1: deploy completed for frontend frontend-pipeline.zip on author,publish - done by ... at 2024-01-18T15:33:22.898Z
Logs:
> Deployed artifact wknd-1.0.0-1705592008-26e7ec1a
> with workspace hash 692021864642a20d6d298044a927d66c0d9cf2adf42d4cca0c800a378ac3f8d3
NOTE
前端软件包中文件的命名必须遵循以下命名约定:
  • “dist”文件夹,对于npm build输出包文件夹
  • “package.json”文件,用于npm依赖关系包

检查RDE的状态 checking-rde-status

您可以使用RDE CLI检查环境是否已准备好部署到,以及通过RDE插件进行了哪些部署。

正在运行:

aio aem:rde:status

返回以下内容:

Info for cm-p12345-e987654
Environment: Ready
- Bundles Author:
 com.adobe.granite.sample.demo-1.0.0.SNAPSHOT
- Bundles Publish:
 com.adobe.granite.sample.demo-1.0.0.SNAPSHOT
- Configurations Author:
 com.adobe.granite.demo.MyServlet
- Configurations Publish:
 com.adobe.granite.demo.MyServlet

如果该命令返回有关实例部署的注释,您仍可以执行下一次更新,但您的上一次更新可能尚未在该实例中显示。

显示部署历史记录 show-deployment-history

您可以通过运行以下命令来检查对RDE进行的部署的历史记录:

aio aem:rde:history

将返回响应,其形式为:

#1: deploy completed for content-package aem-guides-wknd.all-2.1.0.zip on author,publish - done by 029039A55D4DE16A0A494025@AdobeID at 2022-09-12T14:41:55.393Z

从RDE删除 deleting-from-rde

您可以通过CLI工具删除以前部署到RDE的配置和捆绑包。 使用 status 命令以列出可删除的内容,其中包括 bsn 对于捆绑包和 pid 用于在delete命令中引用的配置。

例如,如果 com.adobe.granite.demo.MyServlet.cfg.json 已安装, bsn 只是 com.adobe.granite.demo.MyServlet,不使用 cfg.json 后缀。

不支持删除内容包或内容文件。 要删除它们,应重置RDE,以使其返回到默认状态。

有关更多详细信息,请参阅以下示例:

aio aem:rde:delete com.adobe.granite.csrf.impl.CSRFFilter
#13: delete completed for osgi-config com.adobe.granite.csrf.impl.CSRFFilter on author - done by karl at 2022-09-12T22:01:01.955Z
#14: delete completed for osgi-config com.adobe.granite.csrf.impl.CSRFFilter on publish - done by karl at 2022-09-12T22:01:12.979Z

有关更多信息和演示,请参阅视频教程 如何使用RDE命令(10:01).

重置 reset-rde

重置RDE会同时从创作实例和发布实例中删除所有自定义代码、配置和内容。 例如,如果已经使用RDE测试特定功能,并且希望将其重置为默认状态,以便测试其他功能,则这种重置非常有用。

重置会将RDE设置为最新可用的AEM版本。

您可以使用Cloud Manager通过以下步骤重置您的RDE:

  1. my.cloudmanager.adobe.com 登录 Cloud Manager 并选择适当的组织。

  2. 单击要为其重置RDE的程序。

  3. 在​ 概述 ​页面中,单击屏幕顶部的​ 环境 ​选项卡。

    “环境”信息卡

    • 或者,单击​ 环境 ​信息卡上的​ 全部显示 ​按钮,直接跳转到​ 环境 ​选项卡。

      显示所有选项

  4. 环境 窗口将打开并列出程序的所有环境。

    “环境”选项卡

  5. 单击要重置的RDE的省略号按钮,然后选择 重置.

    查看环境详细信息

  6. 通过单击确认要重置RDE 重置 在对话框中。

    确认重置

  7. Cloud Manager通过横幅通知确认重置过程已开始。

    重置横幅通知

RDE重置过程启动后,通常需要几分钟才能完成,并使环境恢复到默认状态。 您可以随时在中查看重置过程的状态。 状态环境 信息卡或 环境 窗口。

RDE重置状态

您还可以直接从使用省略号按钮重置RDE 环境 上的信息卡 概述 页面。

从环境信息卡重置RDE

有关如何使用Cloud Manager管理环境的更多信息,请参阅 cloud Manager文档.

运行模式 runmodes

可以通过在文件夹名称上使用后缀来应用特定于RDE的OSGI配置,如下例所示:

  • config.rde
  • config.author.rde
  • config.publish.rde

请参阅 运行模式文档 以获取有关运行模式的一般信息。

NOTE
RDE OSGI配置的唯一之处在于,它继承由捆绑包的所声明的任何OSGI属性的值, dev 运行模式。

RDE不同于其他环境,因为RDE中的内容可以安装在/apps下的install.rde文件夹(或install.author.rde或install.publish.rde)中。 这样,您就可以使用命令行工具将内容提交到Git并将其交付到RDE。

填充内容 populating-content

重置RDE时,将删除所有内容,因此如果需要,必须执行显式操作以添加内容。 作为最佳实践,请考虑汇编一组内容以用作测试内容,以便在RDE中验证或调试功能。 可以使用以下几种策略来使用该内容填充RDE:

  1. 使用命令行工具将内容包显式同步到RDE

  2. 将示例内容放置在git中的/apps下的install.rde文件夹内并提交它,然后使用命令行工具将总体内容包同步到RDE。

  3. 使用 内容复制工具 从生产、暂存或开发环境或其他RDE中复制定义的内容集。

  4. 使用包管理器

同步内容包时,您的限制为1 GB。

日志记录 logging

可以通过修改OSGi配置来设置日志级别。 查看 文档 以了解更多信息。

RDE与云开发环境有何不同? how-are-rds-different-from-cloud-development-environments

虽然RDE在许多方面与云开发环境类似,但在体系结构上有一些细微的差异,可用于快速同步代码。 将代码获取到RDE的机制不同 — 对于RDE,一个代码从本地开发环境同步,而对于Cloud开发环境,一个代码通过Cloud Manager部署。

因此,建议在RDE环境中验证代码后,使用非生产管道将代码部署到云开发环境。 最后,在使用生产管道进行部署之前测试代码。

另请注意以下注意事项:

  • RDE不包含预览层
  • RDE当前不支持预发行版渠道。
  • 而RDE支持基于查看和调试前端代码 站点主题站点模板 部署后尚未做好正式发布准备工作,可供早期采用者使用。 请联系 aemcs-rde-support@adobe.com 以试用并提供反馈。

我需要多少个RDE? how-many-rds-do-i-need

RDE可用于每个已许可的解决方案,Adobe还提供了其他RDE,这些RDE可以被许可用于生产(非沙盒)程序。

所需的RDE数量取决于组织的组成和流程。 最灵活的模型是组织为每个AEM Cloud Service开发人员购买专用RDE。 在此模型中,每个开发人员都可以在RDE上测试其代码,而无需与其他团队成员就RDE环境是否可用进行协调。

在另一个极端情况下,具有单个RDE的团队可以使用内部流程来协调哪些开发人员可以在给定时间使用环境。 这可能发生在开发人员达到中间功能里程碑并准备好在云环境中进行验证时,开发人员可以在其中快速做出所需的更改。

中间模型是指一个组织购买多个RDE,因此存在更大可能未使用的RDE的模型。 一种策略可以是为每个Scrum团队或主要功能分配RDE。 内部进程可用于协调环境的使用。

AEM FormsCloud Service快速开发环境(RDE)与其他环境有何不同? how-are-forms-rds-different-from-cloud-development-environments

Forms开发人员可以使用AEM FormsCloud Service快速开发环境快速开发自适应Forms、工作流和自定义项,如自定义核心组件、与第三方系统的集成等。 AEM FormsCloud Service快速开发环境(RDE)不支持通信API。 它还不支持需要记录文档的功能,例如在提交自适应表单时生成记录文档。 下面列出的AEM Forms功能在快速开发环境(RDE)中不可用:

  • 为自适应表单配置记录文档
  • 在提交自适应表单时生成记录文档或执行工作流步骤
  • 使用电子邮件提交操作或工作流中的电子邮件步骤将记录文档作为附件发送
  • 在自适应表单或工作流步骤中使用Adobe Sign
  • 通信API
NOTE
快速开发环境(RDE)的UI与Forms的其他Cloud Service环境之间没有区别。 所有与记录文档相关的选项(如为自适应表单选择记录文档模板)将继续显示在UI中。 这些环境没有通信API和记录文档功能来测试这些选项。 因此,当您选择需要通信API或记录文档功能的任何选项时,不会执行任何操作,并且会显示错误消息。

rde教程

要了解AEMas a Cloud Service中的RDE,请参阅演示视频教程 如何设置、如何使用以及开发生命周期(01:25).

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab