Ambiente de compilação build-environment
Saiba mais sobre o ambiente de compilação do Cloud Manager e como ele cria e testa seu código.
Detalhes do ambiente de compilação build-environment-details
O Cloud Manager compila e testa seu código usando um ambiente de compilação especializado.
-
O ambiente de compilação se baseia em Linux e é derivado do Ubuntu 22.04.
-
O Apache Maven 3.9.4 está instalado.
- A Adobe recomenda atualizar os repositórios Maven para usar HTTPS em vez de HTTP.
-
As versões do Java instaladas são Oracle JDK 11.0.22 e Oracle JDK 8u401.
-
IMPORTANTE: por padrão, a variável de ambiente
JAVA_HOME
está definida como/usr/lib/jvm/jdk1.8.0_401
, que contém o JDK de Oracle 8u401. Este padrão deve ser substituído para Projetos na Nuvem AEM para usar o JDK 11. Consulte a seção Definindo a versão do JDK Maven para obter mais detalhes. -
Há alguns pacotes de sistema adicionais instalados que são necessários.
bzip2
unzip
libpng
imagemagick
graphicsmagick
-
Outros pacotes podem ser instalados no momento da compilação, conforme descrito na seção Instalação de pacotes de sistema adicionais.
-
Cada compilação é feita em um ambiente primitivo; o contêiner de compilação não mantém nenhum estado entre as execuções.
-
O Maven é sempre executado com os três comandos a seguir.
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
-
O Maven é configurado em nível de sistema com um arquivo
settings.xml
, que inclui automaticamente o repositório público de artefatos da Adobe usando um perfil chamadoadobe-public
. (Consulte Repositório público Maven da Adobe para obter mais detalhes).
jacoco-maven-plugin
, a versão usada deve ser pelo menos 0.7.5.201505241946
.Repositórios Maven HTTPS https-maven
O Cloud Manager versão 2023.10.0 iniciou uma atualização contínua do ambiente de compilação (que terminou com a versão 2023.12.0) que incluiu a atualização para o Maven 3.8.8. Uma mudança significativa introduzida no Maven 3.8.1 foi um aprimoramento de segurança destinado a reduzir possíveis vulnerabilidades. Mais especificamente, o Maven agora desabilita por padrão todas as páginas espelho inseguras de http://*
, conforme descrito nas notas de versão do Maven.
Como resultado desse aprimoramento de segurança, algumas pessoas podem enfrentar problemas durante a etapa de compilação, especialmente ao baixar artefatos de repositórios Maven que usam conexões HTTP inseguras.
Para garantir uma experiência perfeita com a versão atualizada, a Adobe recomenda atualizar os repositórios Maven para usar HTTPS em vez de HTTP. Esse ajuste se alinha à evolução contínua do setor em direção a protocolos de comunicação seguros e ajuda a manter um processo de compilação seguro e confiável.
Uso de uma versão específica do Java using-java-support
Por padrão, os projetos são criados pelo processo de compilação do Cloud Manager usando o JDK do Oracle 8, mas os clientes do AEM Cloud Service são altamente recomendados a definir a versão do JDK usada para executar o Maven para 11
.
Definindo a versão do JDK do Maven alternate-maven-jdk-version
É recomendável definir a versão do JDK para toda a execução do Maven para 11
em um arquivo .cloudmanager/java-version
.
Para fazer isso, crie um arquivo chamado .cloudmanager/java-version
na ramificação do repositório Git usada pelo pipeline. Edite o arquivo de forma que ele contenha apenas o texto, 11
. Embora a Cloud Manager também aceite o valor 8
, essa versão não é mais suportada para projetos AEM Cloud Service. Qualquer outro valor será ignorado. Quando 11
é especificado, o Oracle 11 é usado e a variável de ambiente JAVA_HOME
é definida como /usr/lib/jvm/jdk-11.0.22
.
Variáveis de ambiente environment-variables
Variáveis de ambiente padrão standard-environ-variables
Você pode achar necessário variar o processo de compilação com base nas informações sobre o programa ou pipeline.
Por exemplo, se a minificação do JavaScript no tempo de compilação for feita por meio de uma ferramenta como o gulp, talvez você queira usar um nível de minificação diferente ao compilar um ambiente de desenvolvimento, em vez de ambientes de preparo e produção.
Para permitir isso, o Cloud Manager adiciona essas variáveis de ambiente padrão ao contêiner de compilação para cada execução.
CM_BUILD
true
BRANCH
CM_PIPELINE_ID
CM_PIPELINE_NAME
CM_PROGRAM_ID
CM_PROGRAM_NAME
ARTIFACTS_VERSION
CM_AEM_PRODUCT_VERSION
Variáveis de pipeline pipeline-variables
Seu processo de compilação pode depender de variáveis de configuração específicas, cuja colocação no repositório Git seria inadequada, ou talvez seja necessário variá-las entre as execuções de pipeline que usam uma mesma ramificação.
Consulte o documento Configurando variáveis de pipeline para obter mais informações
Instalação de pacotes de sistema adicionais installing-additional-system-packages
Algumas compilações exigem a instalação de pacotes de sistema adicionais para funcionarem plenamente. Por exemplo, uma compilação pode invocar um script Python ou Ruby e deve ter um interpretador de linguagem apropriado instalado. Faça isso chamando exec-maven-plugin
em seu pom.xml
para invocar o APT. Essa execução geralmente deve ser encapsulada em um perfil Maven específico do Cloud Manager. Este exemplo instala o 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>
Essa mesma técnica pode ser usada para instalar pacotes de linguagem específicos, por exemplo, usando gem
para RubyGems ou pip
para Pacotes Python.