Explicación del Entorno de compilación

Detalles del Entorno de compilación

Cloud Manager crea y prueba el código mediante un entorno de compilación especializado. Este entorno tiene los atributos siguientes:

  • El entorno de compilación está basado en Linux, derivado de Ubuntu 18.04.

  • Se ha instalado Apache Maven 3.6.0.

  • Las versiones de Java instaladas son Oracle JDK 8u202 y 11.0.2.

  • Hay algunos paquetes de sistema adicionales instalados que son necesarios:

    • bzip2
    • descomprimir
    • libpng
    • imagemagick
    • graphicsmagick
  • Se pueden instalar otros paquetes en tiempo de compilación como se describe a1/>.

  • Cada obra se construye sobre un entorno prístino; el contenedor de compilación no mantiene ningún estado entre las 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 packageco-maven-plugin:prepare-agent package
  • Maven se configura a nivel del sistema con un archivo settings.xml que incluye automáticamente el repositorio público de Adobes Artact. (Consulte Repositorio público de Adobe para Maven para obtener más información).

NOTA

Aunque Cloud Manager no define una versión específica de jacoco-maven-plugin, la versión utilizada debe ser al menos 0.7.5.201505241946.

Uso de la compatibilidad con Java 11

Cloud Manager ahora admite la creación de proyectos de clientes con Java 8 y Java 11. De forma predeterminada, los proyectos se crean con Java 8.

Los clientes que deseen utilizar Java 11 en sus proyectos pueden hacerlo mediante el Complemento Apache Maven Toolchain.

Para ello, en el archivo pom.xml, agregue una entrada <plugin> con este aspecto:

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

Los valores de proveedor admitidos son oracle y suny los valores de versión admitidos son 1.8, 1.11 y 11.

NOTA

La compilación del proyecto de Cloud Manager sigue utilizando Java 8 para invocar Maven, por lo que la comprobación o aplicación de la versión de Java configurada en el complemento toolchain a través de complementos como el Complemento Apache Maven Enforcer no funciona y estos complementos no deben usarse.

Variables de entorno

Variables de Entorno estándar

En algunos casos, los clientes consideran necesario variar el proceso de compilación en función de la información sobre el programa o la canalización.

Por ejemplo, si se está realizando la minimización de JavaScript en tiempo de compilación, a través de una herramienta como gulp, puede haber un deseo de usar un nivel de minificación diferente cuando se construye para un entorno de desarrollo en lugar de construir para etapa y producción.

Para admitir esto, Cloud Manager agrega estas variables de entorno estándar al contenedor de compilación para cada ejecución.

Nombre de variable Definición
CM_BUILD Siempre definido como "true"
RAMA La rama configurada para la ejecución
CM_PIPELINE_ID El identificador de canalización numérica
CM_PIPELINE_NAME El nombre de la canalización
CM_PROGRAMA_ID El identificador de programa numérico
CM_PROGRAMA_NAME El nombre del programa
ARTIFACTS_VERSION Para una fase o canalización de producción, la versión sintética generada por Cloud Manager
CM_AEM_PRODUCT_VERSION El nombre de la versión

Variables de canalización

En algunos casos, el proceso de generación de un cliente puede depender de variables de configuración específicas que no se pueden colocar en el repositorio Git o que necesitan variar entre las ejecuciones de canalizaciones que utilizan la misma rama.

Cloud Manager permite configurar estas variables mediante la API de Cloud Manager o la CLI de Cloud Manager por canalización. Las variables pueden almacenarse como texto sin formato o cifradas en reposo. En cualquier caso, las variables están disponibles dentro del entorno de compilación como una variable de entorno a la que se puede hacer referencia desde el archivo pom.xml u otras secuencias de comandos de compilación.

Para configurar una variable mediante la CLI, ejecute un comando como:

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

Se pueden enumerar las variables actuales:

$ aio cloudmanager:list-pipeline-variables PIPELINEID

Los nombres de variables solo pueden contener caracteres alfanuméricos y de subrayado (_). Por convención, los nombres deben estar en mayúsculas. Hay un límite de 200 variables por canalización, cada nombre debe tener menos de 100 caracteres y cada valor debe tener menos de 2048 caracteres en el caso de las variables de tipo de cadena y 500 caracteres en el caso de las variables de tipo secretString.

Cuando se utiliza dentro de un archivo Maven pom.xml, generalmente resulta útil asignar estas variables a las propiedades de Maven mediante una sintaxis similar a esta:

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

Instalación de paquetes de sistema adicionales

Algunas compilaciones requieren que se instalen paquetes de sistema adicionales para funcionar completamente. Por ejemplo, una compilación puede invocar una secuencia de comandos Python o ruby y, como resultado, debe tener instalado un intérprete de idioma adecuado. Esto se puede hacer llamando al exec-maven-plugin para invocar APT. Esta ejecución generalmente debe envolverse en un perfil Maven específico del Administrador de la nube. Por ejemplo, para instalar 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 de idioma, por ejemplo, utilizando gem para RubyGems o pip para paquetes Python.

NOTA

Al instalar un paquete de sistema de esta manera no se instala en el entorno de tiempo de ejecución utilizado para ejecutar Adobe Experience Manager. Si necesita un paquete de sistema instalado en el entorno de AEM, póngase en contacto con su representante de Adobe.

En esta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free