AdobeCloud Manager有助于代码构建和部署到AEMas a Cloud Service。 在构建过程的各个步骤中可能会发生故障,需要采取措施来解决这些问题。 本指南将介绍如何了解部署中的常见故障以及如何以最佳方式解决这些故障。
验证步骤只需确保基本Cloud Manager配置有效。 常见的验证失败包括:
构建和单元测试阶段执行Maven构建(mvn clean package
),该项目是从管道配置的Git分支中签出的。
在此阶段发现的错误应该可以在本地重新生成项目,但以下情况除外:
pom.xml
. 请注意,建议不要包含Maven存储库,因为它会增加构建时间。.sleep(..)
在测试代码中。代码扫描会结合使用Java和特定于AEM的最佳实践来执行静态代码分析。
如果代码中存在严重安全漏洞,则代码扫描会导致生成失败。 可以覆盖较小的违规,但建议修复这些违规。 请注意,代码扫描并不完善,可能会导致 误报.
要解决代码扫描问题,请下载Cloud Manager通过提供的CSV格式报表 下载详细信息 按钮并查看任何条目。
有关更多详细信息,请参阅AEM特定规则,请参阅Cloud Manager文档 自定义AEM特定的代码扫描规则.
构建图像负责将在“构建和单元测试”步骤中创建的构建代码工件与AEM版本相结合,以形成单个可部署工件。
虽然在构建和单元测试期间发现任何代码构建和编译问题,但在尝试将自定义构建工件与AEM版本结合时可能会发现配置或结构问题。
当多个OSGi配置通过运行模式解析目标AEM环境时,构建图像步骤失败并出现错误:
[ERROR] Unable to convert content-package [/tmp/packages/enduser.all-1.0-SNAPSHOT.zip]:
Configuration 'com.example.ExampleComponent' already defined in Feature Model 'com.example.groupId:example.all:slingosgifeature:xxxxx:X.X',
set the 'mergeConfigurations' flag to 'true' if you want to merge multiple configurations with same PID
filevault-package-maven-plugin
配置 设置为 <cloudManagerTarget>none</cloudManagerTarget>
.Repoinit脚本定义基线内容、用户、ACL等。 在AEMas a Cloud Service中,repoinit脚本在构建图像期间应用,但在AEM SDK的本地快速启动中,当激活OSGi repoinit工厂配置时会应用这些脚本。 因此,Repoinit脚本可能会在AEM SDK的本地快速启动中悄然失败(进行日志记录),但会导致生成图像步骤失败,停止部署。
Repoinit脚本定义基线内容、用户、ACL等。 在AEM SDK的本地快速入门中,当激活repoinit OSGi工厂配置时,或者换句话说,在存储库处于活动状态并可能已直接或通过内容包发生内容更改后,会应用repoinit脚本。 在AEMas a Cloud Service中,在生成图像期间对可能包含repoinit脚本所依赖内容的存储库应用repoinit脚本。
此问题仅影响不会自动更新到最新AEM版本的非生产环境。
AEMas a Cloud Service会在每个AEM发行版本中自动包含最新核心组件版本,这意味着在自动或手动更新AEMas a Cloud Service环境并为其部署最新版本的核心组件后。
在以下情况下,“生成图像”步骤可能会失败:
core
(OSGi捆绑包)项目为防止出现此故障,只要有AEMas a Cloud Service环境的更新可用,就应在下次生成/部署中包括更新,并始终确保在应用程序代码库中增加核心组件版本之后包括更新。
症状:
“构建映像”步骤失败,并出现“错误”报告 com.adobe.cq.wcm.core.components...
特定版本范围内的包无法由导入 core
项目。
[ERROR] Bundle com.example.core:0.0.3-SNAPSHOT is importing package(s) Package com.adobe.cq.wcm.core.components.models;version=[12.13,13) in start level 20 but no bundle is exporting these for that start level in the required version range.
[ERROR] Analyser detected errors on feature 'com.adobe.granite:aem-ethos-app-image:slingosgifeature:aem-runtime-application-publish-dev:1.0.0-SNAPSHOT'. See log output for error messages.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
原因: 应用程序的OSGi捆绑包(在 core
项目)从核心组件核心依赖项导入Java类,其版本级别与部署到AEMas a Cloud Service的版本级别不同。
解决方法:
如果上述故障诊断方法无法解决问题,请通过以下方式创建Adobe支持案例:
Adobe Admin Console >“支持”选项卡>创建案例
如果您是多个Adobe组织的成员,请确保在创建案例之前在Adobe组织切换器中选择具有失败管道的Adobe组织。
“部署到”步骤负责获取在构建映像中生成的代码构件,启动新的使用它的AEM创作和发布服务,并在成功后删除任何旧的AEM创作和发布服务。 在此步骤中还安装和更新可变内容包和索引。
熟悉 AEMas a Cloud Service日志 在调试“部署到”步骤之前。 此 aemerror
日志包含有关pod启动和关闭的信息,这可能与“部署到问题”相关。 请注意,通过Cloud Manager的部署到步骤中的下载日志按钮提供的日志不是 aemerror
日志,但不包含与您的应用程序启动相关的详细信息。
“部署到”步骤可能失败的三个主要原因是:
在新部署的AEM服务启动期间运行的代码,需要很长时间才能完成Cloud Manager的部署。 在这些情况下,部署可能最终成功,即使认为Cloud Manager状态报告失败。
aemerror
Cloud Manager所显示的故障时间(以GMT为单位记录时间)前后的AEM创作和发布服务的日志,并查找指示任何自定义日志运行进程的日志消息。大多数代码和配置违规是在内部版本中的早期捕获的,但是,自定义代码或配置可能与AEMas a Cloud Service不兼容,并且在容器中执行之前不会检测到。
aemerror
Cloud Manager显示的故障发生时间(以GMT为单位记录时间)前后的AEM创作和发布服务的日志。
/var
是可变的,包含各种临时运行时内容。 包括 /var
在内容包中(例如, ui.content
)通过Cloud Manager部署可能会导致部署步骤失败。
此问题很难识别,因为它不会导致初始部署失败,而只会导致后续部署失败。 明显的症状包括:
验证此问题是导致失败行为的原因:
确定至少一个属于部署的内容包将写入 /var
.
验证主(粗体)分发队列是否在以下位置被阻止:
AEM创作>工具>部署>分发
后续部署失败时,使用下载日志按钮下载Cloud Manager的“部署到”日志:
…并验证日志语句之间是否间隔了约60分钟:
2020-01-01T01:01:02+0000 Begin deployment in aem-program-x-env-y-dev [CorrelationId: 1234]
… 和 …
2020-01-01T02:04:10+0000 Failed deployment in aem-program-x-env-y-dev
请注意,此日志不会包含有关报告为成功的初始部署的这些指示符,而只会在后续失败的部署中包含。
/var
在AEM Publish上。 这会导致将内容包部署到AEM Publish服务失败。/var
资源无需删除下的任何资源 /var
通过作为应用程序的一部分部署的内容包。/var
资源是必需的,请使用定义节点结构 repoinit. Repoinit脚本可以通过OSGi运行模式定位到AEM Author和/或AEM Publish。/var
资源仅在AEM创作上需要,不能使用进行合理建模 repoinit,将它们移至离散的内容包,该内容包仅由安装在AEM Author上 嵌入 它位于 all
在AEM Author运行模式文件夹中包(<target>/apps/example-packages/content/install.author</target>
)。sling-distribution-importer
服务用户,如本中所述 Adobe知识库.如果上述故障诊断方法无法解决问题,请通过以下方式创建Adobe支持案例:
Adobe Admin Console >“支持”选项卡>创建案例
如果您是多个Adobe组织的成员,请确保在创建案例之前在Adobe组织切换器中选择具有失败管道的Adobe组织。