Ambiente build

Scopri l’ambiente di build di Cloud Manager e come crea e verifica il codice.

Dettagli dell’ambiente di generazione

Cloud Manager crea ed esegue il test del codice utilizzando un ambiente di build specializzato.

  • L'ambiente di creazione è basato su Linux, derivato da Ubuntu 18.04.

  • Apache Maven 3.6.0 è installato.

  • Le versioni Java installate sono Oracle JDK 8u202 e Oracle JDK 11.0.2.

  • Per impostazione predefinita, la JAVA_HOME variabile di ambiente impostata su /usr/lib/jvm/jdk1.8.0_202 che contiene l'Oracle JDK 8u202. Vedi Versione JDK di esecuzione Maven alternativa per ulteriori dettagli.

  • Ci sono alcuni pacchetti di sistema aggiuntivi installati che sono necessari.

    • bzip2
    • unzip
    • libpng
    • imagemagick
    • graphicsmagick
  • Altri pacchetti possono essere installati in fase di creazione come descritto nella sezione Installazione di pacchetti di sistema aggiuntivi.

  • Ogni costruzione è fatta su un ambiente incontaminato; il contenitore build non mantiene nessuno stato tra le esecuzioni.

  • Maven viene sempre eseguito con i tre comandi seguenti.

  • 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 è configurato a livello di sistema con un settings.xml file , che include automaticamente l’archivio degli artefatti dell’Adobe pubblico utilizzando un profilo denominato adobe-public. (Vedi Archivio Maven pubblico di Adobe per ulteriori dettagli).

NOTA

Anche se Cloud Manager non definisce una versione specifica del jacoco-maven-plugin, la versione utilizzata deve essere almeno 0.7.5.201505241946.

Utilizzo di una versione Java specifica

Per impostazione predefinita, i progetti sono generati dal processo di creazione di Cloud Manager utilizzando il JDK di Oracle 8. I clienti che desiderano utilizzare un JDK alternativo hanno due opzioni.

Catene di strumenti Maven

La Plug-in catene di strumenti Maven consente ai progetti di selezionare un JDK specifico (o toolchain) da utilizzare nel contesto dei plug-in Maven consapevoli delle catene di strumenti. Questo viene fatto nel pom.xml specificando un valore di fornitore e di versione.

<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>

Questo farà sì che tutti i plug-in Maven consapevoli delle catene di strumenti utilizzino l’Oracle JDK, versione 11.

Quando si utilizza questo metodo, Maven stesso viene comunque eseguito utilizzando il JDK predefinito (Oracle 8) e il JAVA_HOME la variabile di ambiente non viene modificata. Pertanto, il controllo o l’applicazione della versione Java tramite plug-in come Apache Maven Enforcer Plugin non funziona e tali plug-in non devono essere utilizzati.

Le combinazioni fornitore/versione attualmente disponibili sono:

Produttore Versione
oracle 1.8
oracle 1.11
oracle 11
sun 1.8
sun 1.11
sun 11
NOTA

A partire da aprile 2022, Oracle JDK sarà il JDK predefinito per lo sviluppo e il funzionamento delle applicazioni AEM. Il processo di creazione di Cloud Manager passa automaticamente a utilizzando Oracle JDK, anche se nella toolchain Maven è selezionata esplicitamente un’opzione alternativa. Per ulteriori informazioni, consulta le note sulla versione di aprile pubblicate .

Variabili di ambiente

Variabili di ambiente standard

Potrebbe essere necessario variare il processo di creazione in base alle informazioni sul programma o sulla pipeline.

Ad esempio, se la minimizzazione JavaScript in fase di creazione viene eseguita tramite uno strumento come il gulp, potrebbe essere utile utilizzare un livello di minimizzazione diverso durante la creazione di un ambiente di sviluppo rispetto alla creazione di uno staging e produzione.

Per supportare questa funzione, Cloud Manager aggiunge queste variabili di ambiente standard al contenitore di build per ogni esecuzione.

Nome della variabile Definizione
CM_BUILD Sempre impostato su true
BRANCH Il ramo configurato per l’esecuzione
CM_PIPELINE_ID Identificatore numerico della pipeline
CM_PIPELINE_NAME Nome della pipeline
CM_PROGRAM_ID Identificatore numerico del programma
CM_PROGRAM_NAME Nome del programma
ARTIFACTS_VERSION Per una fase o una pipeline di produzione, la versione sintetica generata da Cloud Manager
CM_AEM_PRODUCT_VERSION Versione della versione

Variabili di pipeline

Il processo di creazione può dipendere da specifiche variabili di configurazione che non sarebbe opportuno inserire nell’archivio Git oppure potrebbe essere necessario modificarle tra le esecuzioni della pipeline che utilizzano lo stesso ramo.

Cloud Manager consente di configurare queste variabili tramite l’API di Cloud Manager o l’CLI di Cloud Manager in base alla pipeline. Le variabili possono essere memorizzate come testo normale o cifrate a riposo. In entrambi i casi, le variabili sono rese disponibili all'interno dell'ambiente di creazione come variabile di ambiente a cui è possibile fare riferimento dall'interno del pom.xml file o altri script di build.

Questo comando CLI imposta una variabile.

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

Questo comando elenca le variabili.

$ aio cloudmanager:list-pipeline-variables PIPELINEID

I nomi delle variabili devono rispettare le convenzioni seguenti.

  • Le variabili possono contenere solo caratteri alfanumerici e il carattere di sottolineatura (_).
  • I nomi devono essere maiuscoli.
  • Esiste un limite di 200 variabili per pipeline.
  • Ogni nome deve contenere meno di 100 caratteri.
  • Ogni string Il valore della variabile deve essere minore di 2048 caratteri.
  • Ogni secretString Il valore della variabile di tipo deve essere inferiore a 500 caratteri.

Quando viene utilizzato all'interno di un Maven pom.xml tipicamente è utile mappare queste variabili alle proprietà Maven utilizzando una sintassi simile a questa.

        <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>

Installazione di pacchetti di sistema aggiuntivi

Alcune build richiedono l'installazione di pacchetti di sistema aggiuntivi per funzionare completamente. Ad esempio, una build può richiamare uno script Python o Ruby e dovrà disporre di un interprete di lingua appropriato installato. Questa operazione può essere eseguita chiamando il exec-maven-plugin nel tuo pom.xml per richiamare APT. Questa esecuzione deve generalmente essere racchiusa 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 specifici per la lingua, ad esempio utilizzando gem per RubyGems o pip per pacchetti Python.

NOTA

L'installazione di un pacchetto di sistema in questo modo non lo installa nell'ambiente di runtime utilizzato per l'esecuzione di Adobe Experience Manager. Se hai bisogno di un pacchetto di sistema installato nell’ambiente AEM, contatta il tuo rappresentante Adobe.

In questa pagina