Show Menu
SUJETS×

Création d’un projet d’application AEM

Utilisation de l’assistant pour créer un projet d’application AEM

Pour faciliter la prise en main des nouveaux clients, Cloud Manager peut désormais créer un projet AEM minimal comme point de départ. Ce processus est basé sur l’ AEM Project Archetype .
Suivez les étapes ci-dessous pour créer un projet d’application AEM dans Cloud Manager :
  1. Une fois que vous vous êtes connecté à Cloud Manager et que la configuration du programme de base est terminée, une vignette d’appel à action spéciale s’affiche sur l’écran Vue d’ensemble , si le référentiel est vide.
  2. Cliquez sur Créer pour accéder à l’écran Créer une branche et un projet .
  3. La mosaïque Création de projet en cours s’affiche dans l’écran Présentation du Programme.
  4. Une fois la création du programme terminée, la mosaïque Ajouter un environnement apparaît sur la page Aperçu du programme .
    Consultez Gestion de vos Environnements pour savoir comment ajouter ou gérer des environnements.

Configuration du projet

Modification des détails de configuration du projet

Pour créer et déployer dans Cloud Manager, les projets AEM existants doivent se conformer à certaines règles de base :
  • Les projets doivent être créés à l’aide d’Apache Maven.
  • Un fichier pom.xml doit se trouver à la racine du référentiel Git. Ce fichier pom.xml peut faire référence à autant de sous-modules (qui, à leur tour, peuvent comporter d’autres sous-modules, etc.) que nécessaire.
  • Vous pouvez ajouter des références à d’autres référentiels d’artefact Maven dans vos fichiers pom.xml . L’accès aux référentiels d’artefacts protégés par mot de passe est pris en charge lorsqu’il est configuré. Cependant, l’accès aux référentiels d’artefacts protégés par le réseau n’est pas pris en charge.
  • Les packages de contenu déployables sont découverts en analysant les fichiers zip de package de contenu contenus dans un répertoire appelé target . Un nombre illimité de sous-modules peuvent produire des packages de contenu.
  • Les artefacts déployables de Dispatcher sont découverts en analysant les fichiers zip (contenus dans un répertoire appelé target ) dont les répertoires sont appelés conf et conf.d .
  • S’il existe plusieurs packages de contenu, l’ordre des déploiements des packages n’est pas garanti. Si un ordre spécifique est nécessaire, il est possible d’utiliser les dépendances de package pour le définir. Les packages peuvent être ignorés du déploiement.

Détails de l’environnement de génération

Cloud Manager crée et teste votre code à l'aide d'un environnement de création spécialisé. Cet environnement comporte les attributs suivants :
  • L'environnement de création est basé sur Linux, dérivé de Ubuntu 18.04.
  • Apache Maven 3.6.0 est installé.
  • La version Java a installé Oracle JDK 8u202 et 11.0.2.
  • 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 ci-dessous .
  • 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 la commande : mvn --batch-mode clean 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 Adobe Artifact . (Pour plus d’informations, consultez le référentiel Maven public d’Adobe ).
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 .

Variables d’environnement

Variables d’environnement standard

Dans certains cas, les clients jugent 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 génération pour un environnement de développement et pour des environnements intermédiaire et de 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"
BRANCHE
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
Nom de la version

Variables de pipeline

Dans certains cas, le processus de génération d’un client peut dépendre de variables de configuration spécifiques qui ne seraient pas appropriées pour le référentiel Git ou qui doivent 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.
Pour définir une variable à l’aide de l’interface de ligne de commande, exécutez une commande du type :
$ aio cloudmanager:set-pipeline-variables PIPELINEID --variable MY_CUSTOM_VARIABLE test
Les variables actives peuvent être répertoriées :
$ aio cloudmanager:list-pipeline-variables PIPELINEID
Les noms des variables ne peuvent contenir que des caractères alphanumériques et des caractères de soulignement (_). Par convention, les noms doivent être entièrement en majuscules. Il existe une limite de 200 variables par pipeline, chaque nom doit comporter moins de 100 caractères et chaque valeur doit être inférieure à 2 048 caractères.
En cas d’utilisation dans un fichier Maven pom.xml , il est généralement utile de mapper ces variables aux propriétés Maven en suivant 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>

Activation des profils Maven dans Cloud Manager

Dans certains cas, vous devrez peut-être légèrement modifier le processus de génération lors de l’exécution dans Cloud Manager, contrairement à celui qui s’exécute sur les postes de travail des développeurs. Dans ce cas, les profils Maven peuvent être utilisés pour définir la manière dont la génération doit être différente dans différents environnements, notamment Cloud Manager.
L’activation d’un profil Maven dans l’environnement de génération Cloud Manager doit se faire en recherchant la présence de la variable d’environnement appelée CM_BUILD, décrite plus haut. Par contre, un profil destiné à être utilisé uniquement en dehors de l’environnement de génération Cloud Manager doit être créé en recherchant l’absence de cette variable.
Par exemple, si vous souhaitez générer un message de sortie simple uniquement lorsque la génération est exécutée dans Cloud Manager, procédez comme suit :
        <profile>
            <id>cmBuild</id>
            <activation>
                  <property>
                        <name>env.CM_BUILD</name>
                  </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.8</version>
                        <executions>
                            <execution>
                                <phase>initialize</phase>
                                <configuration>
                                    <target>
                                        <echo>I'm running inside Cloud Manager!</echo>
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

Pour tester ce profil sur un poste de travail de développeur, vous pouvez l’activer sur la ligne de commande (avec -PcmBuild ) ou dans l’environnement de développement intégré (IDE).
Si vous souhaitez générer un message de sortie simple uniquement lorsque la génération est exécutée en dehors de Cloud Manager, procédez comme suit :
        <profile>
            <id>notCMBuild</id>
            <activation>
                  <property>
                        <name>!env.CM_BUILD</name>
                  </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.8</version>
                        <executions>
                            <execution>
                                <phase>initialize</phase>
                                <configuration>
                                    <target>
                                        <echo>I'm running outside Cloud Manager!</echo>
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

Prise en charge du référentiel Maven protégé par mot de passe

Pour utiliser un référentiel Maven protégé par un mot de passe dans Cloud Manager, spécifiez le mot de passe (et éventuellement le nom d’utilisateur) en tant que variable Variables de pipeline Pipeline secrète, puis référencez ce secret dans un fichier nommé .cloudmanager/maven/settings.xml dans le référentiel git. Ce fichier suit le schéma de fichier settings.html Maven Settings. Lorsque Cloud Manager crée des débuts de processus, l’ <servers> élément de ce fichier est fusionné dans le settings.xml fichier par défaut fourni par Cloud Manager. Une fois ce fichier en place, l’ID de serveur est référencé à l’intérieur d’un élément <repository> et/ou <pluginRepository> dans le pom.xml fichier. En règle générale, ces éléments <repository> et/ou <pluginRepository> ces éléments sont contenus dans un profil # Cloud Manager, bien que cela ne soit pas strictement nécessaire.
Par exemple, supposons que le référentiel se trouve à l’adresse https://repository.myco.com/maven2, que le nom d’utilisateur que Cloud Manager doit utiliser soit cloudmanager et que le mot de passe soit secretword défini.
Tout d'abord, définissez le mot de passe comme secret sur le pipeline :
$ aio cloudmanager:set-pipeline-variables PIPELINEID --secret CUSTOM_MYCO_REPOSITORY_PASSWORD secretword
Faites ensuite référence à ceci à partir du .cloudmanager/maven/settings.xml fichier :
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>myco-repository</id>
            <username>cloudmanager</username>
            <password>${env.CUSTOM_MYCO_REPOSITORY_PASSWORD}</password>
        </server>
    </servers>
</settings>

Et enfin référencez l'identifiant du serveur dans le pom.xml fichier :
<profiles>
    <profile>
        <id>cmBuild</id>
        <activation>
                <property>
                    <name>env.CM_BUILD</name>
                </property>
        </activation>
        <build>
            <repositories>
                <repository>
                    <id>myco-repository</id>
                    <name>MyCo Releases</name>
                    <url>https://repository.myco.com/maven2</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>myco-repository</id>
                    <name>MyCo Releases</name>
                    <url>https://repository.myco.com/maven2</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </pluginRepository>
            </pluginRepositories>
        </build>
    </profile>
</profiles>

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, par conséquent, doit se voir installer un interprète de langue approprié. Pour ce faire, appelez le plug-in exec-maven-plugin pour invoquer APT. Cette exécution doit généralement être encapsulée dans un profil Maven spécifique à Cloud Manager. Par exemple, pour installer 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, c’est-à-dire utilisée gem pour les packages RubyGems ou pip pour les packages Python.
Installer un package système de cette manière ne l'installe pas dans l'environnement d'exécution utilisé pour exécuter Adobe Experience Manager. Si vous avez besoin d'un package système installé sur l'environnement AEM, contactez votre représentant Adobe.

Omission des modules de contenu

Dans Cloud Manager, chaque compilation peut produire un certain nombre de modules de contenu. Pour diverses raisons, il peut être préférable de produire un module de contenu, mais de ne pas le déployer. Cela peut s’avérer utile, par exemple, lors de la création de modules de contenu utilisés uniquement à des fins de test ou qui seront recompilés lors d’une autre étape du processus de compilation, c’est-à-dire sous la forme d’un sous-module d’un autre module.
Pour tenir compte de ces scénarios, Cloud Manager recherche une propriété nommée cloudManagerTarget dans les propriétés des modules de contenu créés. Si cette propriété est définie sur « none (aucun) », le module sera ignoré et non déployé. Le mécanisme permettant de définir cette propriété dépend de la manière dont la compilation produit le module de contenu. Par exemple, avec filevault-maven-plugin, vous devez configurer le module externe comme suit :
        <plugin>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>filevault-package-maven-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
                <properties>
                    <cloudManagerTarget>none</cloudManagerTarget>
                </properties>
        <!-- other configuration -->
            </configuration>
        </plugin>

Avec content-package-maven-plugin, il est similaire :
        <plugin>
            <groupId>com.day.jcr.vault</groupId>
            <artifactId>content-package-maven-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
                <properties>
                    <cloudManagerTarget>none</cloudManagerTarget>
                </properties>
        <!-- other configuration -->
            </configuration>
        </plugin>