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版本結合時,可能會發現設定或結構問題。
當目標AEM環境透過執行模式解析多個OSGi設定時,建置影像步驟會失敗並出現錯誤:
[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的本機Quickstart中,這些指令碼會在OSGi Repoinit工廠設定啟動時套用。 因此,Repoinit指令碼可能會在AEM SDK的本機Quickstart上悄悄失敗(記錄),但會導致「建置影像」步驟失敗,並停止部署。
Repoinit指令碼可定義基準內容、使用者、ACL等。 在AEM SDK的本機Quickstart中,Repoinit指令碼會在Repoinit OSGi工廠設定啟動時套用,換言之,在存放庫啟動且可能直接或透過內容套件產生內容變更後。 在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發佈上。 這會導致將內容套件部署到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
服務使用者,如本中所述 ADOBEKB.如果上述的疑難排解方法皆無法解決問題,請透過以下方式建立Adobe支援案例:
Adobe Admin Console >支援標籤>建立案例
如果您是多個Adobe組織的成員,在建立案例之前,請確定已在Adobe組織切換器中選取具有失敗管道的Adobe組織。