AdobeCloud Manager可協助程式碼建立和部署至AEM作為Cloud Service。 建置程式的步驟期間可能會發生失敗,需要採取行動加以解決。 本指南會逐步說明部署中的常見故障,以及如何以最佳方式處理這些故障。
驗證步驟只需確保基本Cloud Manager配置有效。 常見的驗證失敗包括:
「建置」和「單元測試」階段會執行從管道設定的Git分支中結帳之專案的Maven建置(mvn clean package
)。
本階段查明的錯誤應可在本地重建項目,但有下列例外:
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等。 在AEM as aCloud Service中,重新指向指令碼會在建置影像期間套用,不過,在AEM SDK的本機快速入門上,這些指令碼會在啟動OSGi重新指向工廠設定時套用。 因此,AEM SDK的本機Quickstart上的重新指向指令碼可能會悄悄地失敗(隨著記錄),但會導致「建置影像」步驟失敗,導致部署停止。
重新指向指令碼定義基線內容、使用者、ACL等。 在AEM SDK的本機Quickstart中,當重新指向OSGi工廠配置啟動時,或換句話說,在存放庫處於作用中狀態且可能直接或透過內容套件發生內容變更後,會套用重新指向指令碼。 在AEM as aCloud Service中,在建置影像期間,會對可能不包含重新指向指令碼所依賴內容的存放庫套用重新指向指令碼。
此問題只會影響不會自動更新至最新AEM版本的非生產環境。
AEM as aCloud Service會在每個AEM版本中自動加入最新的核心元件版本,這表示AEM as aCloud Service環境會自動或手動更新,並部署最新版核心元件後。
在下列情況下,「建置影像」步驟可能會失敗:
core
(OSGi套件組合)專案中的核心元件maven相依性版本為避免此錯誤,只要AEM as aCloud 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作為Cloud Service的版本層級不同。
解析度:
如果上述的疑難排解方法無法解決問題,請透過以下方式建立Adobe支援案例:
Adobe Admin Console >支援標籤>建立案例
如果您是多個Adobe組織的成員,請在建立案例之前,先在Adobe組織切換器中選取管道失敗的Adobe組織。
「部署至」步驟負責取用「建置影像」中產生的程式碼工件、使用它啟動新的AEM製作和發佈服務,並在成功時移除任何舊的AEM製作和發佈服務。 可在此步驟中安裝和更新可變內容包和索引。
在調試「部署至」步驟之前,請熟悉AEM as aCloud Service日誌。 aemerror
記錄檔包含與Deploy to issues(部署到問題)相關的Pod啟動和關閉資訊。 請注意,Cloud Manager「部署至」步驟中「下載日誌」按鈕提供的日誌不是aemerror
日誌,不包含與應用程式啟動相關的詳細資訊。
「部署至」步驟可能失敗的三個主要原因:
新部署的AEM服務啟動期間執行的程式碼需花費很長時間,使得Cloud Manager在部署完成之前逾時。 在這些情況下,即使認為Cloud Manager狀態報告為「失敗」,部署最終也可能成功。
aemerror
AEM製作和發佈服務在失敗(以GMT為記錄時間)前後的記錄(如Cloud Manager所示),以及尋找指出任何自訂記錄執行程式的記錄訊息。大部分的程式碼和設定違反行為都會在組建的較早階段中擷取,不過自訂程式碼或設定可能與AEM as aCloud Service不相容,且未偵測到,直到在容器中執行為止。
aemerror
檢閱AEM製作和發佈服務在失敗的時間(以GMT為記錄檔)內的記錄,如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
Publish上寫入。這會導致將內容套件部署至AEM Publish服務失敗。/var
資源,請從作為應用程式一部分部署的內容包中刪除/var
下的任何資源。/var
資源,請使用repoint定義節點結構。 可透過OSGi執行模式,將重新指向指令碼鎖定在AEM製作、AEM發佈或兩者。/var
資源僅需AEM作者,且無法使用repoinit合理建模,請將資源移至離散內容套件,而此套件僅由embedding安裝於AEM作者執行模式資料夾(<target>/apps/example-packages/content/install.author</target>
)的all
套件中。sling-distribution-importer
服務用戶提供適當的ACL。如果上述的疑難排解方法無法解決問題,請透過以下方式建立Adobe支援案例:
Adobe Admin Console >支援標籤>建立案例
如果您是多個Adobe組織的成員,請在建立案例之前,先在Adobe組織切換器中選取管道失敗的Adobe組織。