Criar ambiente 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
-
É possível instalar outros pacotes no momento da criação, conforme descrito na seção Instalação de pacotes de sistema adicionais.
-
Cada criação é executada em um ambiente limpo, com o contêiner de criação não retendo 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 todos os espelhos inseguros 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.
Usar uma versão específica do Java using-java-support
O processo de compilação do Cloud Manager usa o JDK do Oracle 8 para compilar projetos por padrão, mas os clientes do AEM Cloud Service devem definir a versão do JDK de execução do Maven como 11
.
Definir a versão do JDK Maven alternate-maven-jdk-version
A Adobe recomenda que você defina 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 - padrão environment-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 ocorrer no momento da criação usando uma ferramenta como o gulp, diferentes níveis de minificação poderão ser preferidos para vários ambientes. Uma build de desenvolvimento pode usar um nível de minificação mais leve em comparação ao 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 ambiente - pipeline pipeline-variables
Seu processo de compilação pode exigir variáveis de configuração específicas que não devem ser armazenadas no repositório Git. Além disso, talvez seja necessário ajustar essas variáveis entre execuções de pipeline usando a mesma ramificação.
Consulte também Configurar variáveis de pipeline para obter mais informações.
Instalar pacotes de sistema adicionais installing-additional-system-packages
Algumas compilações exigem 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. Este processo de instalação pode ser gerenciado chamando o 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.