Byggmiljö build-environment
Läs om Cloud Manager byggmiljö och hur den bygger och testar din kod.
Information om byggmiljö build-environment-details
Cloud Manager bygger och testar koden i en specialiserad byggmiljö.
- Byggmiljön är Linux-baserad och kommer från Ubuntu 2.04.
- Apache Maven 3.9.4 är installerad.
- Adobe rekommenderar att användare uppdaterar sina Maven-databaser så att de använder HTTPS i stället för HTTP.
- De Java-versioner som är installerade är Oracle JDK 11.0.22, Oracle JDK 17.0.10 och Oracle JDK 21.0.4.
-
VIKTIGT! Miljövariabeln
JAVA_HOME
är som standard inställd på/usr/lib/jvm/jdk1.8.0_401
som innehåller Oracle JDK 8u401. Den här standardinställningen bör åsidosättas för AEM Cloud-projekt så att JDK 21 (standard), 17 eller 11 används. Mer information finns i avsnittet Ange JDK-version för Maven. -
Det finns ytterligare systempaket installerade som är nödvändiga.
bzip2
unzip
libpng
imagemagick
graphicsmagick
-
Andra paket kan installeras vid byggtillfället enligt beskrivningen i avsnittet Installera ytterligare systempaket.
-
Varje bygge körs i en ren miljö där byggbehållaren inte har något läge mellan körningarna.
-
Maven körs alltid med följande tre kommandon.
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 har konfigurerats på systemnivå med en
settings.xml
-fil, som automatiskt inkluderar den offentliga Adobe-artefaktdatabasen med en profil med namnetadobe-public
. (Mer information finns i Adobe Public Maven Repository.)
jacoco-maven-plugin
, men den version som krävs beror på projektets Java-version. För Java 8 måste plugin-programversionen vara minst 0.7.5.201505241946
, medan nyare Java-versioner kan kräva en nyare version.HTTPS Maven-databaser https-maven
Cloud Manager release 2023.10.0 påbörjade en rullande uppdatering av byggmiljön (som i version 2023.12.0) som innehöll en uppdatering till Maven 3.8.8. En betydande förändring som introducerades i Maven 3.8.1 var en säkerhetsförbättring som syftar till att minska potentiella sårbarheter. Maven inaktiverar nu alla osäkra http://*
-speglar som standard, vilket beskrivs i versionsinformationen för Maven.
Som ett resultat av den här säkerhetsförbättringen kan vissa användare råka ut för problem under byggfasen, särskilt när artefakter hämtas från Maven-databaser som använder osäkra HTTP-anslutningar.
För att få en smidig upplevelse med den uppdaterade versionen rekommenderar Adobe att användare uppdaterar sina Maven-databaser så att HTTPS används istället för HTTP. Denna justering är anpassad efter branschens växande övergång till säkra kommunikationsprotokoll och hjälper till att upprätthålla en säker och tillförlitlig byggprocess.
Använd en specifik Java-version using-java-support
Cloud Manager byggprocess använder Oracle 8 JDK för att skapa projekt som standard, men kunder som använder AEM Cloud Service bör ställa in JDK-versionen för Maven-exekvering på 21 (standard), 17 eller 11.
Ange version av Maven JDK alternate-maven-jdk-version
Om du vill ställa in Maven-körnings-JDK skapar du en fil med namnet .cloudmanager/java-version
i Git-databasgrenen som används av pipelinen. Redigera filen så att den bara innehåller texten, 21
eller 17
. Även om Cloud Manager accepterar värdet 8
stöds inte den här versionen längre för AEM Cloud-serviceprojekt. Alla andra värden ignoreras. När 21
eller 17
har angetts används Oracle Java 21 eller Oracle Java 17.
Krav för migrering till byggteknik med Java 21 eller Java 17 prereq-for-building
Om du vill gå över till att bygga med Java 21 eller Java 17 måste du först uppgradera till den senaste SonarQube-versionen. Mer information finns i versionsinformationen för Cloud Manager 2025.1.0.
När du migrerar ditt program till en ny Java-version och runtime-version bör du noggrant testa i miljö med dev och stage innan du distribuerar till produktion.
Adobe rekommenderar följande distributionsstrategi:
- Kör ditt lokala SDK med Java 21, som du kan ladda ned från https://experience.adobe.com/#/downloads, distribuera programmet till det och validera dess funktioner. Kontrollera loggarna att det inte finns några fel, vilket tyder på problem med inläsning av klass eller byte-kod.
- Konfigurera en gren i din Cloud Manager-databas att använda Java 21 som Java-version vid byggtid, konfigurera en DEV-pipeline att använda den här grenen och kör pipeline. Kör dina valideringstester.
- Om det ser bra ut kan du konfigurera din stage/prod-pipeline så att den använder Java 21 som Java-version vid byggtiden och köra pipeline.
Om vissa översättningsfunktioner translation-features
Följande funktioner kanske inte fungerar som de ska när de körs i Java 21, och Adobe räknar med att kunna åtgärda dem i början av 2025:
XLIFF
(XML Localization Interchange File Format) misslyckas när mänsklig översättning används.I18n
(Internationalisering) hanterar inte språk på korrekt sätt hebreiska (he
), indonesiska (in
) och jiddistiska (yi
) på grund av ändringar i språkkonstruktorn i nyare Java-versioner.
Körningskrav runtime-requirements
Java 21-miljön används för byggen med Java 21 och Java 17, och den kommer gradvis att tillämpas även på Java 11-byggen (se anmärkningen nedan). En miljö måste finnas i AEM version 17098 eller senare för att Java 21-uppdateringen ska kunna tas emot. För att säkerställa kompatibilitet krävs följande justeringar.
Biblioteksuppdateringar kan användas när som helst eftersom de är kompatibla med äldre Java-versioner.
-
Lägsta version av ASM:
Uppdatera användningen av Java-paketetorg.objectweb.asm
, som ofta paketeras iorg.ow2.asm.*
artefakter, till version 9.5 eller senare för att säkerställa stöd för nyare JVM-miljöer. -
Minimiversion av Groovy:
Uppdatera användningen av Java-paketenorg.apache.groovy
ellerorg.codehaus.groovy
till version 4.0.22 eller senare för att säkerställa stöd för nyare JVM-miljöer.Det här paketet kan inkluderas indirekt genom att du lägger till tredjepartsberoenden som AEM Groovy Console.
-
Minimiversion av Aries SPIFly:
Uppdatera användningen av Java-paketetorg.apache.aries.spifly.dynamic.bundle
till version 1.3.6 eller senare för att säkerställa stöd för nyare JVM-miljöer.
AEM Cloud-tjänsten SDK har stöd för Java 21 och gör att du kan kontrollera om ditt projekt är kompatibelt med Java 21 innan du kör en Cloud Manager-pipeline.
-
Redigera en körningsparameter:
När AEM körs lokalt med Java 21 misslyckas startskripten (crx-quickstart/bin/start
ellercrx-quickstart/bin/start.bat
) på grund av parameternMaxPermSize
. Ta bort-XX:MaxPermSize=256M
från skriptet eller definiera miljövariabelnCQ_JVM_OPTS
genom att ange den som-Xmx1024m -Djava.awt.headless=true
.Problemet har lösts i AEM Cloud Service SDK version 19149 och senare.
.cloudmanager/java-version
är inställt på 21
eller 17
distribueras Java 21-miljön. Java 21-miljön är planerad att gradvis lanseras i alla miljöer (inte bara de miljöer vars kod byggts med Java 11) med början tisdagen den 4 februari 2025. Utgångarna börjar med sandlådor och utvecklingsmiljöer, som följs av alla produktionsmiljöer i april 2025. Kunder som vill använda Java 21-miljön tidigare kan kontakta Adobe på aemcs-java-adopter@adobe.com.Krav för byggtid build-time-reqs
Följande justeringar krävs för att projektet ska kunna byggas med Java 21 och Java 17. De kan uppdateras även innan du kör Java 21 och Java 17 eftersom de är kompatibla med äldre Java-versioner.
Kunder som har AEM Cloud-tjänster rekommenderas att skapa sina projekt med Java 21 så tidigt som möjligt för att utnyttja de nya språkfunktionerna.
-
Minimiversion av
bnd-maven-plugin
:
Uppdatera användningen avbnd-maven-plugin
till version 6.4.0 för att säkerställa stöd för nyare JVM-miljöer.Versioner 7 eller senare är inte kompatibla med Java 11 eller tidigare, så en uppgradering till den versionen rekommenderas inte.
-
Minimiversion av
aemanalyser-maven-plugin
:
Uppdatera användningen avaemanalyser-maven-plugin
till version 1.6.6 eller senare för att säkerställa stöd för nyare JVM-miljöer. -
Minimiversion av
maven-bundle-plugin
:
Uppdatera användningen avmaven-bundle-plugin
till version 5.1.5 eller senare för att säkerställa stöd för nyare JVM-miljöer.Versioner 6 eller senare är inte kompatibla med Java 11 eller tidigare, så en uppgradering till den versionen rekommenderas inte.
-
Uppdatera beroenden i
maven-scr-plugin
:maven-scr-plugin
är inte direkt kompatibelt med Java 21 eller Java 17. Beskrivningsfiler kan dock genereras genom att ASM-beroendeversionen uppdateras i plugin-konfigurationen, vilket visas i följande exempel:
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
<version>1.26.4</version>
<executions>
<execution>
<id>generate-scr-scrdescriptor</id>
<goals>
<goal>scr</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-analysis</artifactId>
<version>9.7.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
...
</plugins>
...
</build>
...
</project>
Miljövariabler - standard environment-variables
Du kan behöva ändra byggprocessen baserat på information om programmet eller pipeline.
Om JavaScript-miniatyrbilder till exempel inträffar vid byggtillfället med ett verktyg som Glup, kan olika miniatyrnivåer föredras för olika miljöer. En utvecklingsbygge kan använda en mindre miniminivå jämfört med staging och produktion.
Som stöd för detta lägger Cloud Manager till dessa standardmiljövariabler i byggbehållaren för varje körning.
CM_BUILD
true
BRANCH
CM_PIPELINE_ID
CM_PIPELINE_NAME
CM_PROGRAM_ID
CM_PROGRAM_NAME
ARTIFACTS_VERSION
CM_AEM_PRODUCT_VERSION
Miljövariabler - pipeline pipeline-variables
Din byggprocess kan kräva specifika konfigurationsvariabler som inte ska lagras i Git-databasen. Dessutom kan du behöva justera de här variablerna mellan pipeline-körningar som använder samma gren.
Mer information finns även i Konfigurera pipeline-variabler.
Installera ytterligare systempaket installing-additional-system-packages
Vissa byggen kräver ytterligare systempaket för att fungera helt. Ett bygge kan till exempel anropa ett Python- eller Ruby-skript och måste ha en lämplig språktolk installerad. Installationsprocessen kan hanteras genom att anropa exec-maven-plugin
i pom.xml
för att anropa APT. Den här exekveringen bör normalt omslutas av en Cloud Manager-specifik Maven-profil. Det här exemplet installerar 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>
Samma teknik kan användas för att installera språkspecifika paket, till exempel med gem
för RubyGems eller pip
för Python-paket.