Build-omgeving build-environment
Meer informatie over de Cloud Manager-ontwikkelomgeving en hoe deze uw code bouwt en test.
Omgevingsdetails samenstellen build-environment-details
Cloud Manager bouwt en test uw code gebruikend een gespecialiseerde bouwstijlmilieu.
- De ontwikkelomgeving is gebaseerd op Linux en is afgeleid van Ubuntu 22.04.
- Apache Maven 3.9.4 is geïnstalleerd.
- Adobe adviseert gebruikers hun Geweven bewaarplaatsen bij te werken om HTTPS in plaats van HTTPte gebruiken.
- De geïnstalleerde Java-versies zijn Oracle JDK 11.0.22, Oracle JDK 17.0.10 en Oracle JDK 21.0.4.
-
BELANGRIJK: Door gebrek, wordt de
JAVA_HOME
milieuvariabele geplaatst aan/usr/lib/jvm/jdk1.8.0_401
, die Oracle JDK 8u401 bevat. Dit gebrek zou voor de Projecten van de Wolk van AEM moeten worden met voeten getreden om JDK 21 (aangewezen), 17, of 11 te gebruiken. Zie Plaatsend de Geweven sectie van de Versie JDKvoor meer details. -
Er zijn enkele extra systeempakketten geïnstalleerd die nodig zijn.
bzip2
unzip
libpng
imagemagick
graphicsmagick
-
Andere pakketten kunnen bij bouwstijltijd zoals die in de sectie wordt beschreven worden geïnstalleerd die de Extra Pakketten van het Systeeminstalleert.
-
Elke bouwstijl loopt in een schone milieu, met de bouwstijlcontainer die geen staat tussen uitvoeringen behoudt.
-
Maven wordt altijd uitgevoerd met de volgende drie opdrachten.
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 wordt geconfigureerd op systeemniveau met een
settings.xml
-bestand. Dit bestand bevat automatisch de openbare Adobe-gegevensopslagruimte met een profiel met de naamadobe-public
. (Zie Openbare Bewaarplaats van Adobevoor meer details).
jacoco-maven-plugin
op, maar de vereiste versie is afhankelijk van de Java-versie van het project. Voor Java 8 moet de versie van de insteekmodule minstens 0.7.5.201505241946
zijn, terwijl voor nieuwere Java-versies mogelijk een recentere versie nodig is.Door HTTPS aangebrachte opslagruimten https-maven
Cloud Manager versie 2023.10.0begon een het rollen update aan het bouwstijlmilieu (die met versie 2023.12.0) voltooide, die een update aan Geweven 3.8.8 omvatte. Een belangrijke wijziging die werd aangebracht in Maven 3.8.1 was een verbetering van de beveiliging die bedoeld was om potentiële kwetsbaarheden te beperken. Specifiek, maven maakt nu alle onveilige http://*
spiegels door gebrek onbruikbaar, zoals die in de Gemaakt versienota'sworden geschetst.
Als gevolg van deze beveiligingsuitbreiding kunnen sommige gebruikers problemen ondervinden tijdens de constructiestap, met name wanneer ze artefacten downloaden van Geweven opslagplaatsen die onveilige HTTP-verbindingen gebruiken.
Voor een vlotte ervaring met de bijgewerkte versie raadt Adobe gebruikers aan hun Geweven opslagplaatsen bij te werken om HTTPS in plaats van HTTP te gebruiken. Deze aanpassing sluit aan op de groeiende verschuiving van de industrie naar veilige communicatieprotocollen en helpt een veilig en betrouwbaar bouwproces in stand te houden.
Een specifieke Java-versie gebruiken using-java-support
In het Cloud Manager-ontwikkelproces wordt standaard gebruikgemaakt van de Oracle 8 JDK om projecten te maken, maar klanten van AEM Cloud Service moeten de JDK-versie van Maven voor uitvoering instellen op 21 (voorkeur), 17 of 11.
De Maven JDK-versie instellen alternate-maven-jdk-version
Als u de Git-uitvoeringsmodus JDK wilt instellen, maakt u een bestand met de naam .cloudmanager/java-version
in de vertakking Git-opslagplaats die door de pijplijn wordt gebruikt. Bewerk het bestand zodat het alleen de tekst 21
of 17
bevat. Hoewel Cloud Manager ook de waarde 8
accepteert, wordt deze versie niet meer ondersteund voor AEM Cloud Service-projecten. Eventuele andere waarden worden genegeerd. Wanneer 21
of 17
wordt opgegeven, wordt Oracle Java 21 of Oracle Java 17 gebruikt.
Vereisten voor migratie naar gebouwen met Java 21 of Java 17 prereq-for-building
Cloud Manager gebruikt nu SonarQube 9.9 om te bouwen met Java 21 of Java 17. Dit is compatibel met deze Java-versies. Deze wijziging is geïntroduceerd in Cloud Manager release 2025.1.0. Er is geen actie van de klant vereist om SonarQube te upgraden. Voor meer details en om de verandering te begrijpen, zie de Nota's van de Versie voor Cloud Manager 2025.1.0.
Wanneer u uw toepassing naar een nieuwe Java-versie (build) en een nieuwe runtimeversie migreert, moet u deze grondig testen in ontwikkelings- en werkgebiedomgevingen voordat u de toepassing implementeert naar productie.
Adobe beveelt de volgende implementatiestrategie aan:
- Voer uw lokale SDK uit met Java 21, dat u kunt downloaden van https://experience.adobe.com/#/downloads, en implementeer uw toepassing in dit programma en valideer de functionaliteit ervan. Controleer de logboeken dat er geen fouten zijn, die op problemen met het laden van klassen of bytecode het weven wijzen.
- Configureer een vertakking in uw Cloud Manager-opslagplaats om Java 21 te gebruiken als Java-versie voor de ontwikkelingstijd, configureer een DEV-pijpleiding om deze vertakking te gebruiken en de pijpleiding uit te voeren. Voer uw validatietests uit.
- Als het goed kijkt, vorm uw stadium/staafpijpleiding om Java 21 als versie van bouwstijltijdJava te gebruiken en de pijpleiding in werking te stellen.
Enkele vertaalfuncties translation-features
De volgende functies werken mogelijk niet correct wanneer deze worden geïmplementeerd in de Java 21-runtime, en Adobe verwacht deze functies begin 2025 te kunnen oplossen:
XLIFF
(XML Localization Interchange File Format) mislukt bij gebruik van Human Translation.I18n
(Internationalisatie) behandelt de taallandinstellingen Hebreeuws (he
), Indonesisch (in
) en Jiddisch (yi
) niet correct als gevolg van wijzigingen in de constructor Locale in nieuwere Java-versies.
Runtime-vereisten runtime-requirements
De Java 21-runtime wordt gebruikt voor builds met Java 21 en Java 17 en wordt ook geleidelijk toegepast op Java 11-builds (zie de opmerking hieronder). Er moet een omgeving zijn in AEM versie 17098 of recenter om de Java 21-update te kunnen ontvangen. Om de compatibiliteit te garanderen, zijn de volgende aanpassingen vereist.
Bibliotheekupdates kunnen altijd worden toegepast, omdat ze compatibel blijven met oudere Java-versies.
-
Minimale versie van ASM:
Werk het gebruik van het pakket van Javaorg.objectweb.asm
bij, vaak gebundeld inorg.ow2.asm.*
artefacten, aan versie 9.5 of hoger om steun voor nieuwere JVM runtimes te verzekeren. -
Minimale versie van Groovy:
Werk het gebruik van de Java-pakkettenorg.apache.groovy
oforg.codehaus.groovy
bij naar versie 4.0.22 of hoger om ondersteuning voor nieuwere JVM-runtimes te garanderen.Deze bundel kan indirect worden omvat door dergebiedsdelen zoals de Console van AEM Groovy toe te voegen.
-
Minimale versie van Aries SPIFly:
Werk het gebruik van het Java-pakketorg.apache.aries.spifly.dynamic.bundle
bij naar versie 1.3.6 of hoger om ondersteuning voor nieuwere JVM-runtimes te garanderen.
De AEM Cloud Service SDK ondersteunt Java 21 en biedt u de mogelijkheid om de compatibiliteit van uw project met Java 21 te controleren voordat u een Cloud Manager-pijpleiding uitvoert.
-
geef een runtime parameter uit:
Wanneer AEM lokaal wordt uitgevoerd met Java 21, mislukken de beginscripts (crx-quickstart/bin/start
ofcrx-quickstart/bin/start.bat
) vanwege de parameterMaxPermSize
. Als remedie verwijdert u-XX:MaxPermSize=256M
uit het script of definieert u de omgevingsvariabeleCQ_JVM_OPTS
en stelt u deze in op-Xmx1024m -Djava.awt.headless=true
.Dit probleem is opgelost in AEM Cloud Service SDK versie 19149 en hoger.
.cloudmanager/java-version
is ingesteld op 21
of 17
, wordt de Java 21-runtime geïmplementeerd. Java 21 runtime is gepland voor geleidelijke implementatie aan alle milieu's (niet alleen die milieu's waarvan code met Java 11 wordt gebouwd) die dinsdag, 4 Februari, 2025 beginnen. De rollouts beginnen met sandboxen en ontwikkelomgevingen, gevolgd door alle productieomgevingen in april 2025. De klanten die Java 21 runtime willen goedkeuren kunnen Adobe in aemcs-java-adopter@adobe.comcontacteren.Vereisten voor de buildtijd build-time-reqs
De volgende aanpassingen zijn vereist om het project te kunnen bouwen met Java 21 en Java 17. Ze kunnen al worden bijgewerkt voordat u Java 21 en Java 17 uitvoert, omdat ze compatibel zijn met oudere Java-versies.
Klanten van AEM Cloud Service wordt aangeraden hun projecten zo snel mogelijk met Java 21 te maken om te profiteren van nieuwe taalfuncties.
-
Minimale versie van
bnd-maven-plugin
:
Werk het gebruik vanbnd-maven-plugin
naar versie 6.4.0 bij om ondersteuning voor nieuwere JVM-runtimes te garanderen.Versies 7 of hoger zijn niet compatibel met Java 11 of lager. Een upgrade naar die versie wordt daarom afgeraden.
-
Minimale versie van
aemanalyser-maven-plugin
:
Werk het gebruik vanaemanalyser-maven-plugin
naar versie 1.6.6 of hoger bij om ondersteuning voor nieuwere JVM-runtimes te garanderen. -
Minimale versie van
maven-bundle-plugin
:
Werk het gebruik vanmaven-bundle-plugin
naar versie 5.1.5 of hoger bij om ondersteuning voor nieuwere JVM-runtimes te garanderen.Versie 6 of hoger is niet compatibel met Java 11 of lager. Een upgrade naar die versie wordt daarom niet aanbevolen.
-
de gebiedsdelen van de Update in
maven-scr-plugin
:maven-scr-plugin
is niet rechtstreeks compatibel met Java 21 of Java 17. U kunt echter wel descriptorbestanden genereren door de ASM-afhankelijkheidsversie bij te werken in de plug-inconfiguratie, zoals in het volgende voorbeeld wordt getoond:
<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>
Omgevingsvariabelen - standaard environment-variables
U kunt het noodzakelijk vinden om het bouwstijlproces te variëren dat op informatie over het programma of de pijpleiding wordt gebaseerd.
Als JavaScript bijvoorbeeld tijdens het maken van een product als gulp miniaturen maakt, hebben verschillende miniatuurniveaus de voorkeur voor verschillende omgevingen. Een ontwikkelingsbuild zou een lichtere minificatie kunnen gebruiken in vergelijking met ophaling en productie.
Om dit te steunen, voegt Cloud Manager deze standaardmilieuvariabelen aan de bouwstijlcontainer voor elke uitvoering toe.
CM_BUILD
true
BRANCH
CM_PIPELINE_ID
CM_PIPELINE_NAME
CM_PROGRAM_ID
CM_PROGRAM_NAME
ARTIFACTS_VERSION
CM_AEM_PRODUCT_VERSION
Omgevingsvariabelen - pijpleiding pipeline-variables
Uw bouwstijlproces zou specifieke configuratievariabelen kunnen vereisen die niet in de bewaarplaats van het Git zouden moeten worden opgeslagen. Bovendien, kunt u deze variabelen tussen pijpleidingsuitvoeringen moeten aanpassen gebruikend de zelfde tak.
Zie ook vormen de Variabelen van de Pijpleidingvoor meer informatie.
Extra systeempakketten installeren installing-additional-system-packages
Sommige bouwstijlen vereisen extra systeempakketten om volledig te functioneren. Een build kan bijvoorbeeld een Python- of Ruby-script aanroepen en moet een geschikte taalinterpreter hebben geïnstalleerd. Dit installatieproces kan worden beheerd door exec-maven-plugin
in uw pom.xml
te roepen om APT aan te roepen. Deze uitvoering moet doorgaans worden opgenomen in een Cloud Manager-specifiek Maven-profiel. In dit voorbeeld wordt Python geïnstalleerd.
<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>
Dezelfde techniek kan worden gebruikt om taalspecifieke pakketten te installeren, bijvoorbeeld met gem
voor RubyGems of pip
voor Python Packages.