Environnement de création build-environment
Découvrez l’environnement de création de Cloud Manager et comment il génère et teste votre code.
Détails de l’environnement de création build-environment-details
Cloud Manager crée et teste votre code à l’aide d’un environnement de génération spécialisé.
- L’environnement de création est basé sur Linux, dérivé de Ubuntu 22.04.
- Apache Maven 3.9.4 est installé.
- Adobe recommande aux utilisateurs et utilisatrices de mettre à jour leurs référentiels Maven de sorte à utiliser HTTPS au lieu de HTTP.
- Les versions de Java installées sont les suivantes : Oracle JDK 11.0.22, Oracle JDK 17.0.10 et Oracle JDK 21.0.4.
-
IMPORTANT : par défaut, la variable d’environnement
JAVA_HOME
est définie sur/usr/lib/jvm/jdk1.8.0_401
, qui contient le JDK Oracle 8u401. Cette valeur par défaut doit être remplacée pour que les projets cloud AEM utilisent le JDK 21 (recommandé), 17 ou 11. Consultez la section Définition de la version du JDK Maven pour plus d’informations. -
D’autres packages système nécessaires sont installés.
bzip2
unzip
libpng
imagemagick
graphicsmagick
-
D’autres packages peuvent être installés au moment de la création, comme décrit dans la section Installer des packages système supplémentaires.
-
Chaque version s’exécute dans un environnement propre, le conteneur de version ne conservant aucun état entre les exécutions.
-
Maven est toujours exécuté avec les trois commandes suivantes.
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 est configuré au niveau du système avec un fichier
settings.xml
qui inclut automatiquement le référentiel public d’artefacts Adobe à l’aide d’un profil appeléadobe-public
. (Pour plus d’informations, consultez le référentiel Maven public d’Adobe).
jacoco-maven-plugin
, mais la version requise dépend de la version Java du projet. Pour Java 8, la version du plug-in doit être au moins 0.7.5.201505241946
, tandis que les versions Java plus récentes peuvent nécessiter une version plus récente.Référentiels Maven HTTPS https-maven
Cloud Manager version 2023.10.0 a commencé une mise à jour continue de l’environnement de création (achevée avec la version 2023.12.0), qui incluait une mise à jour de Maven 3.8.8. L’amélioration de la sécurité visant à atténuer les vulnérabilités potentielles a constitué un changement significatif introduit dans Maven 3.8.1. Plus précisément, Maven désactive désormais par défaut tous les miroirs http://*
non sécurisés, comme indiqué dans les Notes de mise à jour de Maven.
Suite à cette amélioration de la sécurité, certaines personnes peuvent rencontrer des problèmes lors de l’étape de création, en particulier lors du téléchargement d’artefacts à partir de référentiels Maven qui utilisent des connexions HTTP non sécurisées.
Pour garantir une expérience fluide avec la version mise à jour, Adobe recommande aux utilisateurs et utilisatrices de mettre à jour leurs référentiels Maven de sorte à utiliser HTTPS au lieu de HTTP. Cet ajustement s’aligne sur la transition croissante du secteur vers des protocoles de communication sécurisés et contribue à maintenir un processus de création sécurisé et fiable.
Utiliser une version Java spécifique using-java-support
Le processus de création Cloud Manager utilise le JDK Oracle 8 pour créer des projets par défaut, mais les clients AEM Cloud Service doivent définir la version du JDK d’exécution Maven sur 21 (recommandé), 17 ou 11.
Définition de la version du JDK Maven alternate-maven-jdk-version
Pour définir le JDK d’exécution Maven, créez un fichier nommé .cloudmanager/java-version
dans la branche de référentiel Git utilisée par le pipeline. Modifiez le fichier afin qu’il contienne uniquement le texte, le 21
ou le 17
. Bien que Cloud Manager accepte également une valeur de 8
, cette version n’est plus prise en charge pour les projets AEM Cloud Service. Toute autre valeur est ignorée. Lorsque 21
ou 17
est spécifié, Oracle Java 21 ou Oracle Java 17 est utilisé.
Conditions préalables à la migration vers la création avec Java 21 ou Java 17 prereq-for-building
Pour migrer vers la création avec Java 21 ou Java 17, vous devez d’abord effectuer une mise à niveau vers la dernière version de SonarQube. Pour plus d’informations, consultez les notes de mise à jour de Cloud Manager 2025.1.0.
Lors de la migration de votre application vers une nouvelle version de build Java et une nouvelle version d’exécution, testez minutieusement dans les environnements de développement et d’évaluation avant de procéder au déploiement en production.
Adobe recommande la stratégie de déploiement suivante :
- Exécutez votre SDK locale avec Java 21, que vous pouvez télécharger à partir de https://experience.adobe.com/#/downloads, et déployez votre application sur celle-ci et validez ses fonctionnalités. Vérifiez dans les journaux qu'il n'y a pas d'erreurs, ce qui indique des problèmes de chargement de classe ou de tissage de code octet.
- Configurez une branche dans votre référentiel Cloud Manager pour utiliser Java 21 comme version Java au moment de la création, configurez un pipeline de développement pour utiliser cette branche et exécutez le pipeline. Exécutez vos tests de validation.
- Si tout semble correct, configurez votre pipeline d’évaluation/de production pour utiliser Java 21 comme version Java au moment de la création et exécutez le pipeline.
À propos de certaines fonctionnalités de traduction translation-features
Les fonctionnalités suivantes peuvent ne pas fonctionner correctement lorsqu’elles sont déployées sur l’exécution Java 21 et Adobe prévoit de les résoudre d’ici le début de l’année 2025 :
- Le format
XLIFF
(XML Localization Interchange File Format) échoue lors de l’utilisation de la traduction humaine. I18n
(Internationalisation) ne gère pas correctement les paramètres régionaux hébreu (he
), indonésien (in
) et yiddish (yi
) en raison de modifications apportées au constructeur de paramètres régionaux dans les versions Java les plus récentes.
Exigences d’exécution runtime-requirements
Le runtime Java 21 est utilisé pour les versions avec Java 21 et Java 17, et il sera progressivement appliqué aux versions Java 11 également (voir la note ci-dessous). Un environnement doit se trouver dans une version d’AEM 17098 ou plus récente pour recevoir la mise à jour Java 21. Pour garantir la compatibilité, les ajustements suivants sont nécessaires.
Les mises à jour des bibliothèques peuvent être appliquées à tout moment, car elles restent compatibles avec les versions Java plus anciennes.
-
Version minimale d’ASM:
Mettez à jour l’utilisation du package Javaorg.objectweb.asm
souvent regroupé dans des artefactsorg.ow2.asm.*
, vers la version 9.5 ou ultérieure pour garantir la prise en charge des exécutions JVM plus récentes. -
Version minimale de Groovy:
Mettez à jour l’utilisation des packages Javaorg.apache.groovy
ouorg.codehaus.groovy
vers la version 4.0.22 ou ultérieure pour garantir la prise en charge des exécutions JVM plus récentes.Ce lot peut être inclus indirectement en ajoutant des dépendances tierces telles que la console AEM Groovy.
-
Version minimale de Aries SPIFly:
Mettez à jour l’utilisation du package Javaorg.apache.aries.spifly.dynamic.bundle
vers la version 1.3.6 ou ultérieure pour garantir la prise en charge des exécutions JVM plus récentes.
Le SDK AEM Cloud Service prend en charge Java 21 et vous permet de vérifier la compatibilité de votre projet avec Java 21 avant d’exécuter un pipeline Cloud Manager.
-
Modifier un paramètre d’exécution :
Lors de l’exécution locale d’AEM avec Java 21, les scripts de démarrage (crx-quickstart/bin/start
oucrx-quickstart/bin/start.bat
) échouent en raison du paramètreMaxPermSize
. Pour remédier à ce problème, supprimez-XX:MaxPermSize=256M
du script ou définissez la variable d’environnementCQ_JVM_OPTS
, en la définissant sur-Xmx1024m -Djava.awt.headless=true
.Ce problème est résolu dans la version 19149 et ultérieure du SDK AEM Cloud Service.
.cloudmanager/java-version
est défini sur 21
ou 17
, l’exécution Java 21 est déployée. L’exécution de Java 21 est planifiée pour un déploiement progressif vers tous les environnements (et pas seulement ceux dont le code est créé avec Java 11) à partir du mardi 4 février 2025. Les déploiements commencent par les sandbox et les environnements de développement, suivis de tous les environnements de production en avril 2025. Les clients qui souhaitent adopter l’exécution Java 21 auparavant peuvent contacter Adobe à l’adresse aemcs-java-adopter@adobe.com.Exigences de temps de création build-time-reqs
Les ajustements suivants sont nécessaires pour permettre la création du projet avec Java 21 et Java 17. Elles peuvent être mises à jour avant même l’exécution de Java 21 et Java 17, car elles sont compatibles avec les versions Java plus anciennes.
Il est recommandé aux clients AEM Cloud Service de créer leurs projets avec Java 21 dès que possible afin de tirer parti des nouvelles fonctionnalités de langue.
-
Version minimale de
bnd-maven-plugin
:
Mettez à jour l’utilisation debnd-maven-plugin
vers la version 6.4.0 pour garantir la prise en charge des exécutions JVM plus récentes.Les versions 7 ou ultérieures ne sont pas compatibles avec Java 11 ou version antérieure, une mise à niveau vers cette version n’est donc pas recommandée.
-
Version minimale de
aemanalyser-maven-plugin
:
Mettez à jour l’utilisation deaemanalyser-maven-plugin
vers la version 1.6.6 ou ultérieure pour garantir la prise en charge des exécutions JVM plus récentes. -
Version minimale de
maven-bundle-plugin
:
Mettez à jour l’utilisation demaven-bundle-plugin
vers la version 5.1.5 ou une version ultérieure pour garantir la prise en charge des exécutions JVM plus récentes.Les versions 6 ou ultérieures ne sont pas compatibles avec Java 11 ou version antérieure, une mise à niveau vers cette version n’est donc pas recommandée.
-
Mise à jour des dépendances dans
maven-scr-plugin
:
Lemaven-scr-plugin
n’est pas directement compatible avec Java 21 ou Java 17. Cependant, les fichiers descripteurs peuvent être générés en mettant à jour la version des dépendances AEM dans la configuration du plug-in, comme illustré dans l’exemple suivant :
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
<version>1.26.4</version>
<executions>
<execution>
<id>generate-scr-scrdescriptor</id>
<goals>
<goal>scr</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-analysis</artifactId>
<version>9.7.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
...
</plugins>
...
</build>
...
</project>
Variables d’environnement - standard environment-variables
Vous pouvez juger nécessaire de modifier le processus de génération en fonction des informations sur le programme ou le pipeline.
Par exemple, si la minimisation de JavaScript se produit au moment de la création à l’aide d’un outil tel que gulp, différents niveaux de minimisation peuvent être préférés pour divers environnements. Une version de développement peut utiliser un niveau de minimisation plus léger par rapport à l’évaluation et à la production.
Pour la prise en charge, Cloud Manager ajoute ces variables d’environnement standard au conteneur de build pour chaque exécution.
CM_BUILD
true
BRANCH
CM_PIPELINE_ID
CM_PIPELINE_NAME
CM_PROGRAM_ID
CM_PROGRAM_NAME
ARTIFACTS_VERSION
CM_AEM_PRODUCT_VERSION
Variables d’environnement - pipeline pipeline-variables
Votre processus de génération peut nécessiter des variables de configuration spécifiques qui ne doivent pas être stockées dans le référentiel Git. En outre, vous devrez peut-être ajuster ces variables entre les exécutions de pipeline à l’aide de la même branche.
Voir aussi Configurer des variables de pipeline pour plus d’informations.
Installation de packages système supplémentaires installing-additional-system-packages
Certaines versions nécessitent des packages système supplémentaires pour fonctionner entièrement. Par exemple, une version peut appeler un script Python ou Ruby et doit disposer d’un interprète de langue approprié installé. Ce processus d’installation peut être géré en appelant la exec-maven-plugin
de votre pom.xml
pour appeler APT. Cette exécution doit généralement être encapsulée dans un profil Maven spécifique à Cloud Manager. Cet exemple installe 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>
Cette même technique peut être utilisée pour installer des packages spécifiques à la langue, par exemple utiliser gem
pour les packages RubyGems ou pip
pour les packages Python.