Ambiente di build build-environment
Scopri l’ambiente di build di Cloud Manager e come genera e verifica il codice.
Dettagli sull’ambiente di build build-environment-details
Cloud Manager genera e verifica il codice mediante un ambiente di build specializzato.
-
L’ambiente di build è basato su Linux, derivato da Ubuntu 22.04.
-
Apache Maven 3.9.4 è installato.
- Adobe consiglia agli utenti di aggiornare i loro archivi Maven per utilizzare HTTPS invece di HTTP.
-
Le versioni Java installate sono Oracle JDK 11.0.22 e Oracle JDK 8u401.
-
IMPORTANTE: per impostazione predefinita, la variabile di ambiente
JAVA_HOME
è impostata su/usr/lib/jvm/jdk1.8.0_401
che contiene l'Oracle JDK 8u401. Questa impostazione predefinita deve essere sostituita per i progetti AEM Cloud che utilizzano JDK 11. Per ulteriori dettagli, consulta la sezione Impostazione della versione JDK di Maven. -
È necessario installare anche alcuni pacchetti di sistema aggiuntivi.
bzip2
unzip
libpng
imagemagick
graphicsmagick
-
Altri pacchetti possono essere installati al momento della generazione, come descritto nella sezione Installazione di pacchetti di sistema aggiuntivi.
-
Ogni generazione viene svolta in un ambiente incontaminato; il contenitore della build non conserva nessuno stato tra le esecuzioni.
-
Maven viene sempre eseguito con i tre comandi riportati di seguito.
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
-
Maven è configurato a livello di sistema con un file
settings.xml
, che include automaticamente l’archivio di artefatti pubblico di Adobe utilizzando un profilo denominatoadobe-public
. Per ulteriori informazioni, consulta Archivio Maven pubblico di Adobe.
jacoco-maven-plugin
, la versione utilizzata deve essere 0.7.5.201505241946
o superiore.Archivi Maven HTTPS https-maven
Cloud Manager versione 2023.10.0 ha iniziato un aggiornamento continuo dell’ambiente di build (completandolo con la versione 2023.12.0), che includeva un aggiornamento a Maven 3.8.8. Come modifica significativa introdotta in Maven 3.8.1 è stato apportato un miglioramento della sicurezza volto a mitigare potenziali vulnerabilità. In particolare, Maven ora disabilita tutti le corrispondenze http://*
non sicure per impostazione predefinita, come descritto nelle note sulla versione di Maven.
Come risultato di questo miglioramento sulla sicurezza, alcuni utenti potrebbero riscontrare problemi durante la fase di build, in particolare durante il download di artefatti dagli archivi Maven che utilizzano connessioni HTTP non sicure.
Per garantire un’esperienza fluida con la versione aggiornata, Adobe consiglia agli utenti di aggiornare gli archivi Maven per utilizzare HTTPS invece di HTTP. Questo adeguamento è in linea con la crescente tendenza del settore verso protocolli di comunicazione sicuri e contribuisce a mantenere un processo di creazione sicuro e affidabile.
Utilizzo di una versione Java specifica using-java-support
Per impostazione predefinita, i progetti sono generati dal processo di build di Cloud Manager utilizzando il JDK Oracle 8, ma si consiglia vivamente ai clienti AEM Cloud Service di impostare la versione JDK utilizzata per eseguire Maven su 11
.
Impostazione della versione JDK di Maven alternate-maven-jdk-version
È consigliabile impostare la versione JDK per l'intera esecuzione Maven su 11
in un file .cloudmanager/java-version
.
Per eseguire l’operazione, crea un file denominato .cloudmanager/java-version
nel ramo dell’archivio Git utilizzato dalla pipeline. Modificare il file in modo che contenga solo il testo, 11
. Anche se Cloud Manager accetta il valore 8
, questa versione non è più supportata per i progetti AEM Cloud Service. Qualsiasi altro valore viene ignorato. Quando si specifica 11
, viene utilizzato l'Oracle 11 e la variabile di ambiente JAVA_HOME
è impostata su /usr/lib/jvm/jdk-11.0.22
.
Variabili di ambiente environment-variables
Variabili di ambiente standard standard-environ-variables
Potrebbe essere necessario variare il processo di build in base alle informazioni sul programma o sulla pipeline.
Ad esempio, se in fase di generazione la minimizzazione JavaScript viene eseguita tramite uno strumento come Gulp, potrebbe risultare utile utilizzare livelli di minimizzazione diversi per la build di un ambiente di sviluppo e per la build di un ambiente di staging e produzione.
Per supportare la funzione, Cloud Manager aggiunge le variabili di ambiente standard al contenitore della build per ogni esecuzione.
CM_BUILD
true
BRANCH
CM_PIPELINE_ID
CM_PIPELINE_NAME
CM_PROGRAM_ID
CM_PROGRAM_NAME
ARTIFACTS_VERSION
CM_AEM_PRODUCT_VERSION
Variabili delle pipeline pipeline-variables
Il processo di build può dipendere da specifiche variabili di configurazione che sarebbe inopportuno inserire nell’archivio Git o che potrebbero dover essere modificate tra le esecuzioni della pipeline che utilizzano lo stesso ramo.
Per ulteriori informazioni, consulta il documento Configurazione delle variabili di pipeline
Installazione di pacchetti di sistema aggiuntivi installing-additional-system-packages
Alcune build richiedono l’installazione di pacchetti di sistema aggiuntivi per l’operatività completa. Ad esempio, una build può richiamare uno script Python o Ruby e deve disporre di un interprete del linguaggio appropriato installato. È possibile eseguire l’operazione chiamando exec-maven-plugin
in pom.xml
per richiamare APT. Questa esecuzione deve generalmente essere integrata in un profilo Maven specifico per Cloud Manager. In questo esempio viene installato 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>
Questa stessa tecnica può essere utilizzata per installare pacchetti per uno specifico linguaggio, ad esempio utilizzando gem
per RubyGems o pip
per i pacchetti Python.