Entorno de compilación build-environment
Obtenga información sobre el entorno de compilación de Cloud Manager y cómo crea y prueba su código.
Generar detalles del entorno build-environment-details
Cloud Manager crea y prueba su código mediante un entorno de compilación especializado.
-
El entorno de compilación está basado en Linux, derivado de Ubuntu 22.04.
-
Apache Maven 3.9.4 está instalado.
-
Las versiones de Java instaladas son Oracle JDK 11.0.22 y Oracle JDK 8u401.
-
IMPORTANT: De forma predeterminada, la variable de entorno
JAVA_HOME
está configurada en/usr/lib/jvm/jdk1.8.0_401
, que contiene el JDK de Oracle 8u401. AEM Este valor predeterminado debe anularse para que los proyectos de nube de utilicen JDK 11. Consulte la sección Configuración de la versión del JDK de Maven para obtener más información. -
Hay algunos paquetes de sistema adicionales instalados que son necesarios.
bzip2
unzip
libpng
imagemagick
graphicsmagick
-
Se pueden instalar otros paquetes en el momento de la compilación, tal como se describe en la sección Instalación de paquetes de sistema adicionales.
-
Cada compilación se ejecuta en un entorno limpio, y el contenedor de compilación no mantiene ningún estado entre ejecuciones.
-
Maven siempre se ejecuta con los tres comandos siguientes.
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 se configura a nivel de sistema con un archivo
settings.xml
, que incluye automáticamente el repositorio de artefactos de Adobe público usando un perfil denominadoadobe-public
. (Consulte Repositorio Maven público de Adobe para obtener más información).
jacoco-maven-plugin
, la versión utilizada debe ser al menos 0.7.5.201505241946
.Repositorios de Maven HTTPS https-maven
Cloud Manager versión 2023.10.0 inició una actualización móvil del entorno de compilación (que finalizó con la versión 2023.12.0), que incluía una actualización a Maven 3.8.8. Un cambio significativo introducido en Maven 3.8.1 ha sido una mejora de la seguridad destinada a mitigar posibles vulnerabilidades. En concreto, Maven ahora deshabilita de forma predeterminada todas las duplicaciones de http://*
inseguras, tal como se describe en las Notas de la versión de Maven.
Como resultado de esta mejora de seguridad, algunas personas pueden tener problemas durante el paso de compilación, especialmente al descargar artefactos de repositorios Maven que utilizan conexiones HTTP no seguras.
Para garantizar una experiencia sin problemas con la versión actualizada, Adobe recomienda actualizar los repositorios de Maven para que utilicen HTTPS en lugar de HTTP. Este ajuste se ha llevado a cabo para adaptarse a la adopción creciente de la industria de protocolos de comunicación seguros y ayuda a mantener un proceso de compilación seguro y fiable.
Utilizar una versión de Java específica using-java-support
El proceso de generación de Cloud Manager utiliza el JDK de Oracle 8 para generar proyectos de forma predeterminada, pero los clientes de AEM Cloud Service deben establecer la versión del JDK de ejecución de Maven en 11
.
Establezca la versión de Maven JDK alternate-maven-jdk-version
El Adobe recomienda establecer la versión del JDK para toda la ejecución de Maven en 11
en un archivo de .cloudmanager/java-version
.
Para ello, cree un archivo con el nombre .cloudmanager/java-version
en la rama del repositorio de Git utilizada por la canalización. Edite el archivo de modo que contenga únicamente el texto 11
. Aunque Cloud Manager también acepta un valor de 8
, esta versión ya no es compatible con los proyectos de AEM Cloud Service. Se ignora cualquier otro valor. Cuando se especifica 11
, se usa el Oracle 11 y la variable de entorno JAVA_HOME
se establece en /usr/lib/jvm/jdk-11.0.22
.
Variables de entorno: estándar environment-variables
Es posible que necesite variar el proceso de compilación en función de la información sobre el programa o la canalización.
Por ejemplo, si la minificación de JavaScript se produce en el momento de la compilación con una herramienta como gulp, se pueden preferir diferentes niveles de minificación para varios entornos. Una compilación de desarrollo podría utilizar un nivel de minificación más ligero en comparación con el ensayo y la producción.
Para admitir esto, Cloud Manager agrega estas variables de entorno estándar al contenedor de compilación para cada ejecución.
CM_BUILD
true
BRANCH
CM_PIPELINE_ID
CM_PIPELINE_NAME
CM_PROGRAM_ID
CM_PROGRAM_NAME
ARTIFACTS_VERSION
CM_AEM_PRODUCT_VERSION
Variables de entorno: canalización pipeline-variables
El proceso de compilación puede requerir variables de configuración específicas que no deben almacenarse en el repositorio de Git. Además, es posible que tenga que ajustar estas variables entre ejecuciones de canalización que utilicen la misma rama.
Consulte también Configurar variables de canalización para obtener más información.
Instalación de paquetes de sistema adicionales installing-additional-system-packages
Algunas compilaciones requieren paquetes de sistema adicionales para funcionar completamente. Por ejemplo, una compilación puede invocar un script de Python o Ruby y debe tener instalado un intérprete de idioma adecuado. Este proceso de instalación se puede administrar llamando a exec-maven-plugin
en su pom.xml
para invocar APT. Esta ejecución debe envolverse generalmente en un perfil Maven específico de Cloud Manager. En este ejemplo se instala 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>
Esta misma técnica se puede utilizar para instalar paquetes específicos para idiomas, por ejemplo, utilizando gem
para RubyGems o pip
para paquetes de Python.