組建環境 build-environment
了解 Cloud Manager 的構建環境以及它如何構建和測試您的程式碼。
檢視環境詳細資訊 build-environment-details
Cloud Manager 使用專門的構建環境構建和測試您的程式碼。
-
組建環境以 Linux 為基礎,衍生自 Ubuntu 22.04。
-
已安裝 Apache Maven 3.9.4。
- Adobe 建議用者更新其 Maven 存放庫以使用 HTTPS 而非 HTTP。
-
安裝的Java版本為OracleJDK 11.0.22和OracleJDK 8u401。
-
重要:根據預設,
JAVA_HOME
環境變數已設為/usr/lib/jvm/jdk1.8.0_401
其中包含OracleJDK 8u401。 AEM雲端專案應覆寫此預設值,才能使用JDK 11. 請參閱 設定Maven JDK版本 區段以取得更多詳細資料。 -
安裝了一些必要的附加系統套件。
bzip2
unzip
libpng
imagemagick
graphicsmagick
-
在建置時間可安裝其他套件,如安裝附加系統套件區段中所述。
-
每次構建都是在原始環境中完成的;構建容器在執行之間不保持任何狀態。
-
一直使用下列三個命令執行 Maven:
mvn --batch-mode org.apache.maven.plugins:maven-dependency-plugin:3.1.2:resolve-plugins
mvn --batch-mode org.apache.maven.plugins:maven-clean-plugin:3.1.0:clean -Dmaven.clean.failOnError=false
mvn --batch-mode org.jacoco:jacoco-maven-plugin:prepare-agent package
-
透過
settings.xml
檔案在系統層級設定 Maven,這會利用名為adobe-public
的設定檔自動納入公共 Adobe 成品存放庫。如需更多詳細資訊,請參閱 Adobe 公共 Maven 存放庫。
jacoco-maven-plugin
的特定版本,但使用的版本必須至少為 0.7.5.201505241946
。HTTPS Maven 存放庫 https-maven
Cloud Manager 2023.10.0 版開始推出組建環境的更新 (在 2023.12.0 版時完成),其中包含 Maven 3.8.8 的更新。Maven 3.8.1 引入一項重大變更,即為安全性增強,其目的在減少潛在漏洞。具體而言,Maven 現在預設停用所有不安全的 http://*
鏡像,如 Maven 發行說明中所述。
由於此安全性增強,某些使用者可能會在建置步驟中遇到問題,特別是從使用不安全 HTTP 連線的 Maven 存放庫下載成品時。
為了確保更新的版本有流暢的使用體驗,Adobe 建議使用者更新其 Maven 存放庫以使用 HTTPS 而非 HTTP。這項調整符合產業日益轉向使用安全通訊協定的趨勢,有助於維持安全可靠的建置程序。
使用特定 Java 版本 using-java-support
預設情況下,專案會透過Cloud Manager建置流程使用Oracle8 JDK來建置,但強烈建議AEM Cloud Service客戶將用來執行Maven的JDK版本設定為 11
.
設定Maven JDK版本 alternate-maven-jdk-version
建議將整個Maven執行的JDK版本設為 11
在 .cloudmanager/java-version
檔案。
為此,可在管道使用的 Git 存放庫分支中建立名為 .cloudmanager/java-version
的檔案。編輯檔案,使其僅包含文字, 11
. 同時Cloud Manager也接受值 8
,AEM Cloud Service專案不再支援此版本。 任何其他值會受到忽略。時間 11
已指定,使用Oracle11,且 JAVA_HOME
環境變數已設為 /usr/lib/jvm/jdk-11.0.22
.
環境變數 environment-variables
標準環境變數 standard-environ-variables
您可能會發現有必要根據有關計畫或管道的資訊來改變建置流程。
例如,如果透過 gulp 之類的工具完成建置時間 JavaScript 縮製,則在為開發環境建置而不是為中繼和生產環境建置時,可能希望使用不同的縮製等級。
為了支援這一點,Cloud Manager 會在每次執行時將標準環境變數新增到組建容器中。
CM_BUILD
true
BRANCH
CM_PIPELINE_ID
CM_PIPELINE_NAME
CM_PROGRAM_ID
CM_PROGRAM_NAME
ARTIFACTS_VERSION
CM_AEM_PRODUCT_VERSION
管道變數 pipeline-variables
在某些情況下,您的建置流程可能會依據特定的設定變數而定,這些變數不適合放入 Git 存放庫中,或者在使用同一分支的管道執行之間需要有所變化。
請參閱檔案 設定管道變數 以取得詳細資訊
安裝附加系統套件 installing-additional-system-packages
為了充分發揮作用,部分組建需要安裝附加系統套件。例如,組建可能會叫用Python或Ruby指令碼,而且必須安裝適當的語言解譯器。 這可透過呼叫 exec-maven-plugin
pom.xml
以叫用 APT 來完成。這項執行通常應包裝在 Cloud Manager 特定的 Maven 設定檔中。若要安裝 Python。
<profile>
<id>install-python</id>
<activation>
<property>
<name>env.CM_BUILD</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>apt-get-update</id>
<phase>validate</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>apt-get</executable>
<arguments>
<argument>update</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>install-python</id>
<phase>validate</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>apt-get</executable>
<arguments>
<argument>install</argument>
<argument>-y</argument>
<argument>--no-install-recommends</argument>
<argument>python</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
此同一技術可用於安裝特定語言的套件,例如將 gem
用於 RubyGems 或將 pip
用於 Python 套件。