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.

  • De geïnstalleerde Java-versies zijn Oracle JDK 11.0.22 en Oracle JDK 8u401.

  • 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 AEM Projecten van de Wolk moeten worden met voeten getreden om JDK 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 op systeemniveau geconfigureerd met een settings.xml -bestand dat automatisch de openbare gegevensopslagruimte voor Adoben bevat met een profiel met de naam adobe-public . (Zie 🔗 voor meer details van de Adobe Openbare Maven Bewaarplaats .)

NOTE
Hoewel Cloud Manager geen specifieke versie van de jacoco-maven-plugin definieert, moet de gebruikte versie ten minste 0.7.5.201505241946 zijn.

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.

Om ervoor te zorgen dat de bijgewerkte versie probleemloos wordt uitgevoerd, 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 Oracle 8 JDK om projecten te maken, maar AEM Cloud Service-klanten moeten de JDK-versie van Maven voor uitvoering instellen op 11 .

De Maven JDK-versie instellen alternate-maven-jdk-version

Adobe raadt u aan de JDK-versie voor de volledige uitgevoerde Maven in te stellen op 11 in een .cloudmanager/java-version -bestand.

Hiertoe maakt u een bestand met de naam .cloudmanager/java-version in de vertakking van de it-opslagruimte die door de pijplijn wordt gebruikt. Bewerk het bestand zodat het alleen de tekst bevat, 11 . 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 11 wordt opgegeven, wordt Oracle 11 gebruikt en wordt de omgevingsvariabele JAVA_HOME ingesteld op /usr/lib/jvm/jdk-11.0.22 .

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. Als u een systeempakket nodig hebt dat op de AEM-omgeving is geïnstalleerd, neemt u contact op met uw Adobe-vertegenwoordiger.
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