Die Build-Umgebung build-environment
Erfahren Sie mehr über die spezielle Build-Umgebung, die Cloud Manager zum Erstellen und Testen Ihres Codes verwendet.
Umgebungsdetails details
Die Build-Umgebungen von Cloud Manager weisen folgende Eigenschaften auf.
-
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, um HTTPS anstelle von HTTP zu verwenden.
-
Die installierten Java-Versionen sind Oracle JDK 8u401 und Oracle JDK 11.0.22.
/usr/lib/jvm/jdk1.8.0_401/usr/lib/jvm/jdk-11.0.22
-
Standardmäßig wird die Umgebungsvariable
JAVA_HOMEauf/usr/lib/jvm/jdk1.8.0_401festgelegt, was Oracle JDK 8u401 enthält. Weitere Einzelheiten finden Sie Abschnitt Alternative JDK-Version Maven-Ausführung . -
Zusätzliche erforderliche Systempakete werden installiert.
bzip2unziplibpngimagemagickgraphicsmagick
-
Andere Pakete werden zur Build-Zeit installiert, wie im Abschnitt Installieren zusätzlicher Systempakete“ .
-
Jeder Build wird in einer neuen Umgebung erstellt. Der Build-Container speichert keine Daten zwischen Ausführungen.
-
Maven wird mit diesen drei Befehlen ausgeführt:
mvn --batch-mode org.apache.maven.plugins:maven-dependency-plugin:3.1.2:resolve-pluginsmvn --batch-mode org.apache.maven.plugins:maven-clean-plugin:3.1.0:clean -Dmaven.clean.failOnError=falsemvn --batch-mode org.jacoco:jacoco-maven-plugin:prepare-agent package
-
Maven wird auf Systemebene mit einer Datei
settings.xmlkonfiguriert, die automatisch das öffentliche Adobe-Artefakt-Repository einschließt und ein Profil namensadobe-publicverwendet. Weitere Informationen dazu finden Sie im öffentlichen Maven-Repository von Adobe. -
Node.js 18 ist für Frontend-Pipelines verfügbar.
.cloudmanager/java-version unterstützt. Weitere Informationen finden Sie unter Verwenden einer bestimmten Java-Version.jacoco-maven-plugin definiert, muss mindestens eine Version 0.7.5.201505241946 sein.HTTPS-Maven-Repositorys https-maven
Cloud Manager 2023.10.0 begann mit einem rollierenden Update der Build-Umgebung (abgeschlossen mit Version 2023.12.0), das ein Update auf Maven 3.8.8 enthielt. Eine in Maven 3.8.1 eingeführte Änderung war eine Sicherheitsverbesserung, um potenzielle Schwachstellen zu beheben. Insbesondere deaktiviert Maven nun alle unsicheren http://*-Spiegelungen standardmäßig, wie in den Maven-Versionshinweisen beschrieben.
Einige Benutzende stoßen während des Build-Schritts auf Probleme 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 unterstützt die Umstellung der Branche auf sichere Kommunikationsprotokolle und sorgt für einen sicheren und zuverlässigen Build-Prozess.
Verwenden einer bestimmten Java-Version using-java-version
Standardmäßig werden Projekte vom Cloud Manager-Build-Prozess mit dem Oracle 8 JDK erstellt. Kunden, die ein alternatives JDK verwenden möchten, können eine alternative JDK-Version für den gesamten Maven-Ausführungsprozess auswählen.
Cannot find matching toolchain definitions. fehlschlagen. Verwenden Sie stattdessen die .cloudmanager/java-version-Datei, um JDK 11, 17 oder 21 auszuwählen.- Entfernen Sie Toolchains, indem Sie alle
org.apache.maven.plugins:maven-toolchains-pluginund alletoolchains.xmllöschen, die für Ihre Quellcodeverwaltung festgelegt wurden. - Wählen Sie ein JDK mit
.cloudmanager/java-version(21, 17 oder 11) aus, wie in Alternative Maven-Ausführung JDK-Version beschrieben. - Adobe empfiehlt, den Cloud Manager-Build-Cache zu löschen oder eine neue Pipeline-Ausführung auszulösen.
Alternative JDK-Version für die Maven-Ausführung alternate-maven
Sie können Oracle 8 oder Oracle 11 als JDK für die gesamte Maven-Ausführung auswählen. Dieser Ansatz ändert das für alle Plug-ins verwendete JDK. Daher wird das Überprüfen und Erzwingen der Java-Version mit dem Apache Maven Enforcer-Plug-) unterstützt.
Erstellen Sie dazu eine Datei mit dem Namen .cloudmanager/java-version in der von der Pipeline verwendeten Git-Repository-Verzweigung. Diese Datei kann entweder den Inhalt 11 oder 8 enthalten. Alle anderen Werte werden ignoriert. Wenn 11 angegeben ist, verwendet das System Oracle 11 und setzt die JAVA_HOME Umgebungsvariable auf /usr/lib/jvm/jdk-11.0.22. Wenn 8 angegeben ist, verwendet das System Oracle 8 und setzt die JAVA_HOME Umgebungsvariable auf /usr/lib/jvm/jdk1.8.0_401.
Umgebungsvariablen environment-variables
Standard-Umgebungsvariablen standard-environ-variables
In einigen Fällen ist es erforderlich, den Build-Prozess basierend auf Informationen über das Programm oder die Pipeline zu variieren.
Wenn Sie beispielsweise ein Tool wie gulp für die JavaScript-Minimierung verwenden, sollten Sie im Vergleich zu Staging- und Produktionsumgebungen unterschiedliche Minimierungsstufen für die Entwicklung verwenden.
Um dies zu unterstützen, fügt Cloud Manager diese Standard-Umgebungsvariablen bei jeder Ausführung dem Build-Container hinzu.
CM_BUILDtrue (wahr) festgelegtBRANCHCM_PIPELINE_IDCM_PIPELINE_NAMECM_PROGRAM_IDCM_PROGRAM_NAMEARTIFACTS_VERSIONVerfügbarkeit von Standard-Umgebungsvariablen availability
Standard-Umgebungsvariablen können an verschiedenen Stellen verwendet werden.
Authoring-, Vorschau- und Veröffentlichungsumgebungen author-preview-publish
In der Authoring-, Vorschau- und Veröffentlichungsumgebung können sowohl reguläre Umgebungsvariablen als auch Geheimnisse verwendet werden.
Dispatcher dispatcher
Im Dispatcher können nur reguläre Umgebungsvariablen verwendet werden. Geheimnisse können nicht verwendet werden.
Allerdings können Umgebungsvariablen nicht in IfDefine-Richtlinien verwendet werden.
OSGi-Konfigurationen osgi
In den OSGi-Konfigurationen können sowohl reguläre Umgebungsvariablen als auch Geheimnisse verwendet werden.
Pipeline-Variablen pipeline-variables
In einigen Fällen hängt der Build-Prozess von bestimmten Konfigurationsvariablen ab. Diese Variablen können nicht im Git-Repository platziert werden oder müssen zwischen Pipeline-Ausführungen mit derselben Verzweigung variieren.
Cloud Manager ermöglicht die Konfiguration dieser Variablen über die Cloud Manager-API oder die Cloud Manager-CLI individuell für die Pipelines. Variablen werden entweder als reiner Text oder im Ruhezustand verschlüsselt gespeichert. In beiden Fällen werden Variablen innerhalb der Build-Umgebung als Umgebungsvariable bereitgestellt, die dann in der Datei pom.xml oder anderen Build-Skripten referenziert werden kann.
Um eine Variable mithilfe der CLI festzulegen, führen Sie einen Befehl ähnlich dem folgenden aus.
$ aio cloudmanager:set-pipeline-variables PIPELINEID --variable MY_CUSTOM_VARIABLE test
Aktuelle Variablen können mit einem Befehl ähnlich dem folgenden aufgelistet werden.
$ aio cloudmanager:list-pipeline-variables PIPELINEID
Variablen müssen bestimmte Einschränkungen einhalten.
- Variablennamen dürfen nur alphanumerische Zeichen und den Unterstrich (
_) enthalten.- Standardmäßig werden die Namen alle großgeschrieben.
- Pro Pipeline sind maximal 200 Variablen zulässig.
- Jeder Name darf höchstens 99 Zeichen enthalten.
- Jeder Zeichenfolgenwert darf höchstens 2047 Zeichen enthalten.
- Jeder
secretString-Wert darf höchstens 499 Zeichen enthalten.
Bei Verwendung in einer Maven-Datei pom.xml ist es in der Regel hilfreich, diese Variablen Maven-Eigenschaften mithilfe einer ähnlichen Syntax wie der folgenden zuzuordnen.
<profile>
<id>cmBuild</id>
<activation>
<property>
<name>env.CM_BUILD</name>
</property>
</activation>
<properties>
<my.custom.property>${env.MY_CUSTOM_VARIABLE}</my.custom.property>
</properties>
</profile>
Installieren zusätzlicher Systempakete installing-additional-system-packages
Um ordnungsgemäß zu funktionieren, müssen einige Builds zusätzliche Systempakete installieren. Ein Build ruft beispielsweise ein Python- oder Ruby-Skript auf und benötigt einen entsprechenden Sprach-Interpreter. Dieses Szenario kann durch Aufrufen des -exec-maven-plugin zum Aufrufen von APT gehandhabt werden. Diese Ausführung ist in einem Cloud Manager-spezifischen Maven-Profil eingeschlossen. Um beispielsweise Python zu installieren, können Sie wie folgt vorgehen:
<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 dieser Methode können Sie auch sprachspezifische Pakete installieren. Das heißt, Sie verwenden gem für RubyGems oder pip für Python-Pakete.