Environnement de création

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 génération

Cloud Manager crée et teste votre code à l’aide d’un environnement de génération spécialisé.

  • L’environnement de génération est basé sur Linux, dérivé de Ubuntu 18.04.

  • Apache Maven 3.6.0 est installé.

  • Les versions Java installées sont Oracle JDK 8u202 et Oracle JDK 11.0.2.

  • Par défaut, la variable d’environnement JAVA_HOME est définie sur /usr/lib/jvm/jdk1.8.0_202 qui contient le JDK Oracle 8u202. Consultez la section Autre version du JDK d’exécution Maven pour plus d’informations.

  • D’autres packages système sont installés, ce qui est nécessaire.

    • bzip2
    • unzip
    • libpng
    • imagemagick
    • graphicsmagick
  • D’autres packages peuvent être installés au moment de la création, comme décrit dans la section . Installation de packages système supplémentaires.

  • Chaque génération a lieu dans un environnement vierge ; le conteneur de génération ne conserve 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 packageco-maven-plugin:prepare-agent package

  • Maven est configuré au niveau du système avec une settings.xml qui inclut automatiquement le référentiel d’artefacts d’Adobe public à l’aide d’un profil nommé adobe-public. (Pour plus d’informations, consultez le référentiel Maven public d’Adobe).

REMARQUE

Bien que Cloud Manager ne définisse pas de version spécifique du jacoco-maven-plugin, la version utilisée doit être au moins 0.7.5.201505241946.

Utilisation d’une version de Java spécifique

Par défaut, les projets sont créés par le processus de génération Cloud Manager à l’aide du JDK Oracle 8. Les clients qui souhaitent utiliser un autre JDK disposent de deux options.

Maven Toolchains

Le plug-in Maven Toolchains permet aux projets de sélectionner un JDK spécifique (dit toolchain) pour l’utiliser dans le contexte des plug-ins Maven compatibles avec les chaînes d’outils. Cette opération est effectuée dans le fichier pom.xml du projet en spécifiant un fournisseur et une valeur de version.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-toolchains-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <goals>
                <goal>toolchain</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <toolchains>
            <jdk>
                <version>11</version>
                <vendor>oracle</vendor>
            </jdk>
        </toolchains>
    </configuration>
</plugin>

Elle entraîne l’utilisation du JDK Oracle, version 11 dans tous les plug-ins Maven compatibles avec les chaînes d’outils.

Lors de l’utilisation de cette méthode, Maven s’exécute toujours en utilisant le JDK par défaut (Oracle 8) et la variable d’environnement JAVA_HOME n’est pas modifiée. Par conséquent, la vérification ou l’application de la version Java par le biais de plug-ins tels que le plug-in Apache Maven Enforcer ne fonctionne pas et ces plug-ins ne doivent pas être utilisés.

Les combinaisons fournisseur/version actuellement disponibles sont les suivantes :

Fournisseur Version
oracle 1.8
oracle 1.11
oracle 11
sun 1.8
sun 1.11
sun 11
REMARQUE

À compter d’avril 2022, le JDK Oracle sera le JDK par défaut pour le développement et le fonctionnement des applications AEM. Le processus de création de Cloud Manager passe automatiquement à l’utilisation du JDK Oracle, même si une autre option est explicitement sélectionnée dans la chaîne d’outils Maven. Pour plus d’informations, reportez-vous aux notes de mise à jour d’avril une fois publiées.

Variables d’environnement

Variables d’environnement standard

Il peut s’avérer nécessaire de modifier le processus de génération en fonction des informations sur le programme ou le pipeline.

Par exemple, si la minification JavaScript au moment de la génération est effectuée par le biais d’un outil comme gulp, il peut être nécessaire d’utiliser un niveau de minification différent lors de la création pour un environnement de développement plutôt que pour la création pour 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.

Nom de variable Définition
CM_BUILD Toujours définie sur true
BRANCH Branche configurée pour l’exécution
CM_PIPELINE_ID Identifiant numérique de pipeline
CM_PIPELINE_NAME Nom du pipeline
CM_PROGRAM_ID Identifiant numérique de programme
CM_PROGRAM_NAME Nom du programme
ARTIFACTS_VERSION Pour un pipeline intermédiaire ou de production, version synthétique générée par Cloud Manager
CM_AEM_PRODUCT_VERSION Version de la version

Variables de pipeline

Votre processus de création peut dépendre de variables de configuration spécifiques qui ne seraient pas appropriées pour le référentiel git ou vous devrez peut-être les varier entre les exécutions de pipeline utilisant la même branche.

Cloud Manager permet de configurer ces variables par le biais de l’API Cloud Manager ou de l’interface de ligne de commande de Cloud Manager pour chaque pipeline. Les variables peuvent être stockées en texte brut ou chiffrées au repos. Dans les deux cas, les variables sont disponibles dans l’environnement de génération en tant que variable d’environnement qui peut ensuite être référencée à partir du fichier pom.xml ou d’autres scripts de génération.

Cette commande d’interface de ligne de commande définit une variable .

$ aio cloudmanager:set-pipeline-variables PIPELINEID --variable MY_CUSTOM_VARIABLE test

Cette commande répertorie les variables.

$ aio cloudmanager:list-pipeline-variables PIPELINEID

Les noms de variables doivent respecter les conventions suivantes.

  • Les variables ne peuvent contenir que des caractères alphanumériques et un trait de soulignement (_).
  • Les noms doivent être en majuscules.
  • Il existe une limite de 200 variables par pipeline.
  • Chaque nom doit comporter moins de 100 caractères.
  • Chaque string doit comporter moins de 2 048 caractères.
  • Chaque secretString La valeur de la variable type doit comporter moins de 500 caractères.

Lorsqu’il est utilisé dans un Maven pom.xml , il est généralement utile de mapper ces variables aux propriétés Maven en utilisant une syntaxe similaire à celle-ci.

        <profile>
            <id>cmBuild</id>
            <activation>
                <property>
                    <name>env.CM_BUILD</name>
                </property>
            </activation>
            <properties>
                <my.custom.property>${env.MY_CUSTOM_VARIABLE}</my.custom.property>
            </properties>
        </profile>

Installation de packages système supplémentaires

Certaines versions nécessitent d’autres packages système pour fonctionner entièrement. Par exemple, une version peut appeler un script Python ou Ruby et doit avoir un interpréteur de langue approprié installé. Pour ce faire, appelez la méthode exec-maven-plugin dans 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 modules spécifiques à une langue, par exemple en utilisant gem pour RubyGems ou pip pour les packages Python.

REMARQUE

Installer un package système de cette manière ne l’installe pas dans l’environnement d’exécution utilisé pour Adobe Experience Manager. Si vous avez besoin d’installer un package système dans l’environnement AEM, contactez votre représentant Adobe.

Sur cette page