Build-Umgebung build-environment
Erfahren Sie mehr über die Build-Umgebung von Cloud Manager und darüber, wie sie den Code erstellt und testet.
Details der Build-Umgebung build-environment-details
Cloud Manager erstellt und testet Ihren Code mithilfe einer speziellen Erstellungsumgebung.
-
Die Build-Umgebung ist Linux-basiert und von Ubuntu 22.04 abgeleitet.
-
Apache Maven 3.9.4 ist installiert.
- Adobe empfiehlt Benutzenden, ihre Maven-Repositorys zu aktualisieren, sodass sie HTTPS anstelle von HTTP verwenden.
-
Die installierten Java-Versionen sind Oracle JDK 11.0.22 und Oracle JDK 8u401.
-
WICHTIG: Standardmäßig wird die Variable
JAVA_HOME
Umgebungsvariable auf/usr/lib/jvm/jdk1.8.0_401
enthält Oracle JDK 8u401. Diese Standardeinstellung sollte für AEM Cloud-Projekte überschrieben werden, damit JDK 11 verwendet wird. Siehe Festlegen der Maven-JDK-Version für weitere Details. -
Es sind einige zusätzliche erforderliche Systempakete installiert.
bzip2
unzip
libpng
imagemagick
graphicsmagick
-
Andere Pakete können zur Build-Zeit installiert werden, wie im Abschnitt Installieren zusätzlicher Systempakete beschrieben.
-
Jeder Build wird in einer unberührten Umgebung erstellt, der Build-Container speichert zwischen den Ausführungen keinen Status.
-
Maven wird immer mit den folgenden drei Befehlen ausgeführt.
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 wird auf Systemebene mit einer
settings.xml
-Datei konfiguriert, die automatisch das öffentliche Adobe-Artefakt-Repository enthält und ein Profil namensadobe-public
verwendet. (Weitere Informationen dazu finden Sie im Adobe Public Maven Repository.)
jacoco-maven-plugin
definiert, muss mindestens die Version 0.7.5.201505241946
verwendet werden.HTTPS-Maven-Repositorys https-maven
Cloud Manager Version 2023.10.0 hat eine rollierende Aktualisierung der Build-Umgebung gestartet (mit Version 2023.12.0 abgeschlossen), die eine Aktualisierung auf Maven 3.8.8 enthielt. Eine wesentliche Änderung, die in Maven 3.8.1 eingeführt wurde, war eine Sicherheitsverbesserung, die darauf abzielte, potenzielle Schwachstellen zu minimieren. Insbesondere deaktiviert Maven jetzt alle unsicheren http://*
-Spiegelungen standardmäßig, wie in den Maven-Versionshinweisen beschrieben.
Aufgrund dieser Sicherheitsverbesserung können bei einzelnen Benutzenden während des Build-Schritts Probleme auftreten, insbesondere beim Herunterladen von Artefakten aus Maven-Repositorys, die unsichere HTTP-Verbindungen verwenden.
Um ein reibungsloses Erlebnis mit der aktualisierten Version zu gewährleisten, empfiehlt Adobe, dass Benutzende ihre Maven-Repositorys so aktualisieren, dass sie HTTPS anstelle von HTTP verwenden. Diese Anpassung steht im Einklang mit dem wachsenden Trend der Branche hin zu sicheren Kommunikationsprotokollen und trägt zur Aufrechterhaltung eines sicheren und zuverlässigen Build-Prozesses bei.
Verwenden einer bestimmten Java-Version using-java-support
Standardmäßig werden Projekte vom Cloud Manager-Build-Prozess mit dem Oracle 8 JDK erstellt. AEM Cloud Service-Kunden wird jedoch dringend empfohlen, die JDK-Version, die zum Ausführen von Maven verwendet wird, auf 11
.
Festlegen der Maven-JDK-Version alternate-maven-jdk-version
Es wird empfohlen, die JDK-Version für die gesamte Maven-Ausführung auf 11
in einer .cloudmanager/java-version
-Datei.
Erstellen Sie dazu eine Datei mit dem Namen .cloudmanager/java-version
in der von der Pipeline verwendeten Git-Repository-Verzweigung. Bearbeiten Sie die Datei so, dass sie nur den Text enthält. 11
. Cloud Manager akzeptiert auch den Wert 8
festgelegt ist, wird diese Version nicht mehr für AEM Cloud Service-Projekte unterstützt. Alle anderen Werte werden ignoriert. Wann 11
angegeben ist, wird Oracle 11 verwendet und die JAVA_HOME
Umgebungsvariable auf /usr/lib/jvm/jdk-11.0.22
.
Umgebungsvariablen environment-variables
Standard-Umgebungsvariablen standard-environ-variables
Je nach den Informationen über das Programm oder die Pipeline kann es notwendig sein, den Build-Prozess zu variieren.
Wenn beispielsweise eine JavaScript-Minimierung während der Build-Erstellung mithilfe eines Tools wie gulp durchgeführt wird, soll beim Erstellen für eine Entwicklungsumgebung möglicherweise eine andere Minimierungsstufe verwendet werden als beim Erstellen für eine Staging- oder Produktionsumgebung.
Um dies zu unterstützen, fügt Cloud Manager diese Standard-Umgebungsvariablen bei jeder Ausführung dem Build-Container hinzu.
CM_BUILD
true
(wahr) festgelegtBRANCH
CM_PIPELINE_ID
CM_PIPELINE_NAME
CM_PROGRAM_ID
CM_PROGRAM_NAME
ARTIFACTS_VERSION
CM_AEM_PRODUCT_VERSION
Pipeline-Variablen pipeline-variables
Der Build-Prozess kann von bestimmten Konfigurationsvariablen abhängen, die nicht im Git-Repository platziert werden können oder zwischen Pipeline-Ausführungen mit derselben Verzweigung variieren müssen.
Weitere Informationen finden Sie im Dokument Konfigurieren von Pipeline-Variablen.
Installieren zusätzlicher Systempakete installing-additional-system-packages
Einige Builds erfordern die Installation zusätzlicher Systempakete, damit sie vollumfänglich funktionieren. So ist es z. B. möglich, dass ein Build ein Python- oder Ruby-Skript aufruft, wofür der entsprechende Sprach-Interpreter installiert sein muss. Dies kann durch Aufrufen des exec-maven-plugin
in ihrer pom.xml
erfolgen, wodurch APT aufgerufen wird. Diese Ausführung sollte im Allgemeinen in einem Cloud Manager-spezifischen Maven-Profil eingeschlossen sein. In diesem Beispiel wird Python installiert.
<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>
Mit derselben Methode können Sie auch sprachspezifische Pakete installieren, z. B. mit gem
für RubyGems oder mit pip
für Python-Pakete.