本文档提供了有关AEMas a Cloud Service中Cloud Manager的最常见问题的解答。
是。您需要将 maven-toolchains-plugin
,以正确设置Java 11。
记录了该过程 此处.
例如,请参阅 wknd项目示例项目代码.
尝试将AEM Cloud Manager内部版本从Java 8切换到11时,该内部版本可能会失败。 如果您遇到以下错误,则需要删除 maven-scr-plugin
并将所有OSGi批注转换为OSGi R6批注。
[main] [ERROR] Failed to execute goal org.apache.felix:maven-scr-plugin:1.26.4:scr (generate-scr-scrdescriptor) on project helloworld.core: /build_root/build/testsite/src/main/java/com/adobe/HelloWorldServiceImpl.java : Unable to load compiled class: com.adobe.HelloWorldServiceImpl: com/adobe/HelloWorldServiceImpl has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 -> [Help 1]
有关如何删除此插件的说明,请参阅 这里。
对于Cloud Manager内部版本, maven-enforcer-plugin
可能会因此错误而失败。
"[main] [WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireJavaVersion".
这是一个已知问题,因为Cloud Manager使用不同版本的Java来运行maven命令而不是编译代码。 只是省略 requireJavaVersion
从 maven-enforcer-plugin
配置。
是。除安全评级之外的所有代码质量检查失败都是非关键量度,因此可以通过扩展结果UI中的项目,将它们作为部署管道的一部分进行绕过。
具有 部署经理、项目经理或业务所有者 角色可以覆盖问题,在这种情况下,管道继续进行,或者他们可以接受问题,在这种情况下,管道会因失败而停止。
查看文档 代码质量测试 和 配置非生产管道 以了解更多详细信息。
是。对于开发人员部署,请使用git分支 pom.xml
文件必须包含 -SNAPSHOT
在 <version>
值。
这样,当版本未发生更改时,仍然可以安装后续部署。 在开发人员部署中,不会为Maven内部版本添加或生成自动版本。
您还可以将版本设置为 -SNAPSHOT
用于暂存和生产内部版本或部署。 Cloud Manager会自动设置正确的版本号,并在git中为您创建一个标记。 如果需要,可以稍后引用此标记。
有关版本处理的更多详细信息包括 记录在此。
在暂存和生产部署中,自动版本将生成为 记录在此。
要在暂存和生产部署中进行自定义版本控制,请设置一个由三部分组成的适当版本,如 1.0.0
. 每次部署到生产环境时,请增加该版本。
Cloud Manager会自动将其版本添加到暂存和生产内部版本并创建git分支。 无需特殊配置。 如果您没有按照之前所述设置Maven版本,部署仍将成功,并且会自动设置版本。
请参阅 此git资源 以了解更多详细信息。
部署失败的最常见原因是 sling-distribution-importer
用户。 在这种情况下,部署步骤在Cloud Manager部署期间失败,并生成以下错误。
[Queue Processor for Subscriber agent forwardPublisherSubscriber] org.apache.jackrabbit.vault.fs.io.Importer Error while committing changes. Retrying import from checkpoint at /. Retries 4/10
[Queue Processor for Subscriber agent forwardPublisherSubscriber] org.apache.sling.distribution.journal.impl.subscriber DistributionSubscriber Error processing queue item
org.apache.sling.distribution.common.DistributionException: Error processing distribution package
dstrpck-1583514457813-c81e7751-2da6-4d00-9814-434187f08d32. Retry attempts 162/infinite.
Caused by: org.apache.sling.api.resource.PersistenceException: Unable to commit changes to session.
Caused by: javax.jcr.AccessDeniedException: OakAccess0000: Access denied [EventAdminAsyncThread #7] org.apache.sling.distribution.journal.impl.publisher.DistributionPublisher [null] Error processing distribution package` `dstrpck-1583514457813-c81e7751-2da6-4d00-9814-434187f08d32. Retry attempts 344/infinite. Message: Error trying to extract package at path /etc/packages/com.myapp/myapp-base.ui.content-5.1.0-SNAPSHOT.
的 sling-distribution-importer
用户需要对 ui.content package
. 这通常意味着您需要为这两者添加权限 /conf
和 /var
.
解决方案是 RepositoryInitializer OSGi配置 脚本添加到应用程序部署包,以为 sling-distribution-importer
用户。
在上一个示例错误中,包 myapp-base.ui.content-*.zip
包含内容 /conf
和 /var/workflow
. 为使部署成功, sling-distribution-importer
这些路径下需要。
以下是 org.apache.sling.jcr.repoinit.RepositoryInitializer-DistributionService.config
OSGi配置,用于添加 sling-distribution-importer
用户。 此配置将在 /var
. 此类配置必须添加到下的应用程序包中 /apps/myapp/config
(其中, myapp是存储应用程序代码的文件夹)。
如果 添加RepositoryInitializer OSGi配置 没有解决错误,可能是由于这些其他问题之一所致。
部署可能由于OSGi配置错误而失败,该配置会中断开箱即用的服务。
部署可能因调度程序或Apache配置错误而失败。
部署可能会因在将内容包(Sling distribution)从创作实例复制到发布实例期间出现其他一些故障而失败。
您可能会收到 403
尝试通过列出或设置管道变量时,出现以下错误 aio
中。
$ aio cloudmanager:list-pipeline-variables 222
Cannot get variables: https://cloudmanager.adobe.io/api/program/111/pipeline/222/variables (403 Forbidden)
$ aio cloudmanager:set-pipeline-variables 222 --variable TEST 1
Cannot get variables: https://cloudmanager.adobe.io/api/program/111/pipeline/222/variables (403 Forbidden)
$ aio cloudmanager:set-environment-variables 1755 --variable TEST 1
setting variables... !
Cannot set variables: https://cloudmanager.adobe.io/api/program/111/environment/222/variables (403 Forbidden)
在这种情况下,执行这些命令的用户需要添加到 部署管理器 角色。
请参阅 API权限 以了解更多详细信息。