Show Menu
TEMAS×

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 el momento de la compilación, como se describe a continuación .
  • 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 de sistema con un archivo settings.xml que incluye automáticamente el repositorio público de Adobe Artiact . (Consulte Repositorio de Maven Público de Adobe para obtener más información).
Aunque Cloud Manager no define una versión específica del 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 <plugin> entrada 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>

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

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 se ponen a disposición dentro del entorno de compilación como una variable de entorno a la que se puede hacer referencia desde dentro del pom.xml archivo 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.
Cuando se utiliza dentro de un Maven pom.xml archivo, generalmente resulta útil asignar estas variables a las propiedades de Maven con 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, es decir, gem para RubyGems o pip para paquetes Python.
La instalación de un paquete de sistema de esta manera no lo 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.