Ambiente di build build-environment
Scopri l’ambiente di build specializzato utilizzato da Cloud Manager per generare e testare il codice.
Dettagli dell’ambiente details
Gli ambienti di build di Cloud Manager dispongono degli attributi seguenti.
-
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 8u371 e Oracle JDK 11.0.22.
/usr/lib/jvm/jdk1.8.0_401/usr/lib/jvm/jdk-11.0.22
-
Per impostazione predefinita, la variabile dell’ambiente
JAVA_HOMEè impostata su/usr/lib/jvm/jdk1.8.0_401, che contiene Oracle JDK 8u401. Per ulteriori dettagli, consulta la sezione Versione JDK alternativa per l’esecuzione Maven. -
Vengono installati ulteriori pacchetti di sistema necessari.
bzip2unziplibpngimagemagickgraphicsmagick
-
Altri pacchetti vengono installati in fase di compilazione come descritto nella sezione Installazione di pacchetti di sistema aggiuntivi.
-
Ogni build viene eseguita in un nuovo ambiente. Il contenitore di build non mantiene i dati tra le esecuzioni.
-
Maven viene eseguito con questi tre comandi:
mvn --batch-mode org.apache.maven.plugins:maven-dependency-plugin:3.1.2:resolve-pluginsmvn --batch-mode org.apache.maven.plugins:maven-clean-plugin:3.1.0:clean -Dmaven.clean.failOnError=falsemvn --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 l’Archivio Maven pubblico di Adobe. -
Node.js 18 è disponibile per pipeline front-end.
.cloudmanager/java-version. Per ulteriori informazioni, vedere Utilizzo di una versione Java specifica.jacoco-maven-plugin, la versione utilizzata deve essere almeno 0.7.5.201505241946.Archivi Maven HTTPS https-maven
In Cloud Manager 2023.10.0 è stato avviato un aggiornamento continuo dell’ambiente di build (completato con la versione 2023.12.0), che include un aggiornamento a Maven 3.8.8. Una modifica introdotta in Maven 3.8.1 era un miglioramento della sicurezza per risolvere potenziali vulnerabilità. In particolare, Maven ora disabilita tutte le corrispondenze http://* non sicure per impostazione predefinita, come descritto nelle note sulla versione di Maven.
Alcuni utenti rilevano problemi durante la fase di build 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. Questa modifica supporta la transizione del settore verso protocolli di comunicazione sicuri e mantiene un processo di sviluppo sicuro e affidabile.
Utilizzo di una versione Java specifica using-java-version
Per impostazione predefinita, i progetti generati dal processo di build di Cloud Manager utilizzano il JDK di Oracle 8. I clienti che desiderano utilizzare un JDK alternativo possono selezionare una versione JDK alternativa per l’intero processo di esecuzione Maven.
Cannot find matching toolchain definitions. Utilizza il file .cloudmanager/java-version per selezionare JDK 11, 17 o 21.- Rimuovere le toolchain eliminando qualsiasi voce
org.apache.maven.plugins:maven-toolchains-plugine qualsiasi elementotoolchains.xmldi cui è stato eseguito il commit nel controllo del codice sorgente. - Selezionare un JDK con
.cloudmanager/java-version(21, 17 o 11) come descritto in Versione JDK alternativa per l'esecuzione Maven. - Adobe consiglia di cancellare la cache di build di Cloud Manager o di attivare una nuova esecuzione della pipeline.
Versione JDK alternativa per l’esecuzione di Maven alternate-maven
È possibile selezionare Oracle 8 o Oracle 11 come JDK per l’intera esecuzione Maven. Questo approccio cambia il JDK utilizzato per tutti i plug-in. Di conseguenza, è supportata la verifica e l’applicazione della versione Java utilizzando il plug-in Apache Maven Enforcer.
Per eseguire questo processo, crea un file denominato .cloudmanager/java-version nel ramo dell’archivio Git utilizzato dalla pipeline. Questo file può avere come contenuto 11 o 8. Qualsiasi altro valore viene ignorato. Se si specifica 11, verrà utilizzato Oracle 11 e la variabile di ambiente JAVA_HOME verrà impostata su /usr/lib/jvm/jdk-11.0.22. Se si specifica 8, verrà utilizzato Oracle 8 e la variabile di ambiente JAVA_HOME verrà impostata su /usr/lib/jvm/jdk1.8.0_401.
Variabili di ambiente environment-variables
Variabili di ambiente standard standard-environ-variables
In alcuni casi, è necessario variare il processo di build in base alle informazioni sul programma o sulla pipeline.
Ad esempio, quando utilizzi uno strumento come gulp per la minimizzazione di JavaScript, utilizza diversi livelli di minimizzazione per gli ambienti di sviluppo rispetto a quelli di staging e produzione.
Per supportare questa funzione, Cloud Manager aggiunge al contenitore di creazione le variabili di ambiente standard per ogni esecuzione.
CM_BUILDtrueBRANCHCM_PIPELINE_IDCM_PIPELINE_NAMECM_PROGRAM_IDCM_PROGRAM_NAMEARTIFACTS_VERSIONDisponibilità di variabili di ambiente standard availability
Le variabili di ambiente standard possono essere utilizzate in diverse posizioni.
Ambienti di authoring, anteprima e pubblicazione author-preview-publish
Negli ambienti di authoring, anteprima e pubblicazione è possibile utilizzare sia le normali variabili di ambiente che i segreti.
Dispatcher dispatcher
Solo le variabili di ambiente normali possono essere utilizzate con il Dispatcher. I segreti non possono essere utilizzati.
Tuttavia, le variabili di ambiente non possono essere utilizzate nelle direttive IfDefine.
Configurazioni OSGi osgi
Le normali variabili di ambiente e i segreti possono essere utilizzati nelle configurazioni OSGi.
Variabili di pipeline pipeline-variables
In alcuni casi, il processo di build dipende da variabili di configurazione specifiche. Queste variabili non sono appropriate per l’inserimento nell’archivio Git o devono variare tra le esecuzioni della pipeline che utilizzano lo stesso ramo.
Cloud Manager consente di configurare queste variabili tramite l’API o l’interfaccia della riga di comando di Cloud Manager, in base alla pipeline. Le variabili vengono memorizzate come testo normale o crittografate quando inattive. In entrambi i casi, le variabili sono rese disponibili all’interno dell’ambiente di build come una variabile di ambiente a cui è possibile fare riferimento dal file pom.xml o da altri script della build.
Per impostare una variabile utilizzando CLI, eseguire un comando simile al seguente.
$ aio cloudmanager:set-pipeline-variables PIPELINEID --variable MY_CUSTOM_VARIABLE test
Le variabili attuali possono essere elencate utilizzando un comando simile al seguente.
$ aio cloudmanager:list-pipeline-variables PIPELINEID
Le variabili devono rispettare determinate limitazioni.
- I nomi delle variabili possono contenere solo caratteri alfanumerici e il carattere di sottolineatura (
_).- Per convenzione, i nomi sono tutti maiuscoli.
- Esiste un limite di 200 variabili per pipeline.
- Ogni nome deve avere una lunghezza inferiore a 100 caratteri.
- Ogni valore di stringa deve avere una lunghezza inferiore a 2048 caratteri.
- Ogni valore della variabile
secretStringdeve avere una lunghezza inferiore a 500 caratteri.
Quando viene utilizzato all’interno di un file Maven pom.xml, generalmente è utile mappare queste variabili alle proprietà Maven utilizzando una sintassi simile alla seguente.
<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 installing-additional-system-packages
Per funzionare correttamente, alcune build richiedono l’installazione di pacchetti di sistema aggiuntivi. Ad esempio, una build richiama uno script Python o Ruby e richiede l’installazione di un interprete del linguaggio appropriato. Questo scenario può essere gestito chiamando exec-maven-plugin per richiamare APT. Questa esecuzione è racchiusa in un profilo Maven specifico per Cloud Manager. Ad esempio, per installare Python puoi effettuare le seguenti operazioni:
<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>
Questo metodo può essere utilizzato anche per installare pacchetti specifici per lingua. In altre parole, utilizzando gem per RubyGems o pip per i pacchetti Python.