Build-omgeving build-environment

Meer informatie over de Cloud Manager-ontwikkelomgeving en hoe deze uw code bouwt en test.

TIP
In dit document wordt de Cloud Manager-ontwikkelomgeving besproken voor het ontwikkelen van uw AEM as a Cloud Service-project. Voor details op cliëntplatforms die door AEM as a Cloud Service voor inhoud creatie worden gesteund, te zien gelieve het document Gesteunde Platforms van de Cliënt.

Omgevingsdetails samenstellen build-environment-details

Cloud Manager bouwt en test uw code gebruikend een gespecialiseerde bouwstijlmilieu.

  • 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 naam adobe-public . (Zie Openbare Bewaarplaats van Adobevoor meer details).

NOTE
Cloud Manager geeft geen specifieke versie van de 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:

  1. 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.
  2. 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.
  3. 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 Java org.objectweb.asm bij, vaak gebundeld in org.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-pakketten org.apache.groovy of org.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-pakket org.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 of crx-quickstart/bin/start.bat ) vanwege de parameter MaxPermSize . Als remedie verwijdert u -XX:MaxPermSize=256M uit het script of definieert u de omgevingsvariabele CQ_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.

IMPORTANT
Wanneer .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 van bnd-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 van aemanalyser-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 van maven-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.

Naam variabele
Definitie
CM_BUILD
Altijd ingesteld op true
BRANCH
De gevormde tak voor de uitvoering
CM_PIPELINE_ID
De numerieke identificatie van de pijplijn
CM_PIPELINE_NAME
De pijpleidingsnaam
CM_PROGRAM_ID
De numerieke programma-id
CM_PROGRAM_NAME
De programmenaam
ARTIFACTS_VERSION
Voor een stadium of een productiepijpleiding, de synthetische versie die door Cloud Manager wordt gegenereerd
CM_AEM_PRODUCT_VERSION
De releaseversie

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-pluginin 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.

NOTE
Als u een systeempakket op deze manier installeert, wordt dit niet geïnstalleerd in de runtimeomgeving die voor het uitvoeren van Adobe Experience Manager wordt gebruikt. Neem contact op met uw Adobe-vertegenwoordiger als u een systeempakket op de AEM-omgeving wilt installeren.
TIP
Voor details over het front-end bouwt milieu, zie het Ontwikkelen Plaatsen met de Voorste-Eind Pijpleiding.
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab