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>
.重新指向指令碼定義基線內容、使用者、ACL等。 在AEMas a Cloud Service中,重新指向指令碼會在建置影像期間套用,但在AEM SDK的本機快速入門上,則會在啟動OSGi重新指向工廠設定時套用。 因此,AEM SDK的本機Quickstart上的重新指向指令碼可能會悄悄地失敗(隨著記錄),但會導致「建置影像」步驟失敗,導致部署停止。
重新指向指令碼定義基線內容、使用者、ACL等。 在AEM SDK的本機Quickstart中,當重新指向OSGi工廠配置啟動時,或換句話說,在存放庫處於作用中狀態且可能直接或透過內容套件發生內容變更後,會套用重新指向指令碼。 在AEMas a Cloud Service中,在建置影像期間,會對可能不包含重新指向指令碼所依據內容的存放庫套用重新指向指令碼。
此問題只會影響不會自動更新至最新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類別,其版本層級與部署至AEM as a Cloud Service的版本層級不同。
解析度:
如果上述的疑難排解方法無法解決問題,請透過以下方式建立Adobe支援案例:
Adobe Admin Console >支援頁簽>建立案例
如果您是多個Adobe組織的成員,請在建立案例之前,先在Adobe組織切換器中選取管道失敗的Adobe組織。
「部署至」步驟負責取用「建置影像」中產生的程式碼工件、使用它啟動新的AEM製作和發佈服務,並在成功時移除任何舊的AEM製作和發佈服務。 可在此步驟中安裝和更新可變內容包和索引。
熟悉 AEMas a Cloud Service記錄 在調試「部署至」步驟之前。 此 aemerror
記錄檔包含與Deploy to issues(部署到問題)相關的pod啟動和關閉資訊。 請注意,透過Cloud Manager「部署至」步驟中的「下載記錄」按鈕可用的記錄,不是 aemerror
記錄,且不包含與應用程式啟動相關的詳細資訊。
「部署至」步驟可能失敗的三個主要原因:
新部署的AEM服務啟動期間執行的程式碼需花費很長時間,使得Cloud Manager在部署完成之前逾時。 在這些情況下,即使認為Cloud Manager狀態報告為「失敗」,部署最終也可能成功。
aemerror
在失敗(以GMT為單位記錄)前後記錄AEM製作和發佈服務(如Cloud Manager所示),並尋找指出任何自訂記錄執行程式的記錄訊息。大部分的程式碼和設定違反行為都會在組建的較早階段中擷取,不過自訂程式碼或設定可能與AEMas a Cloud Service不相容,且未偵測到,直到在容器中執行為止。
aemerror
在失敗的時間(以GMT記錄)內記錄AEM製作和發佈服務,如Cloud Manager所示。
/var
是可變的,包含各種暫時的執行階段內容。 包括 /var
(例如 ui.content
)部署時,可能會導致部署步驟失敗。
此問題難以識別,因為它不會在初始部署(僅在後續部署)中導致失敗。 明顯的症狀包括:
驗證此問題是失敗行為的原因:
確定至少一個內容包是部署的一部分,寫入到 /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發佈上。 這會導致將內容套件部署至AEM Publish服務失敗。/var
資源不需要刪除 /var
來自部署為應用程式一部分的內容包。/var
資源是必需的,請使用 重點. 可透過OSGi執行模式,將重新指向指令碼鎖定在AEM製作、AEM發佈或兩者。/var
資源僅需用於AEM作者,且無法使用 重點,請將它們移至獨立內容套件,而此套件僅安裝在AEM Author上,依 內嵌 在 all
套件(位於AEM Author執行模式資料夾中)(<target>/apps/example-packages/content/install.author</target>
)。sling-distribution-importer
本文所述的服務用戶 AdobeKB.如果上述的疑難排解方法無法解決問題,請透過以下方式建立Adobe支援案例:
Adobe Admin Console >支援頁簽>建立案例
如果您是多個Adobe組織的成員,請在建立案例之前,先在Adobe組織切換器中選取管道失敗的Adobe組織。