De ontwikkelomgeving build-environment
Leer over de gespecialiseerde bouwstijlomgeving die de gebruikers van Cloud Manager om uw code te bouwen en te testen.
Omgevingsdetails details
Cloud Manager-ontwikkelomgevingen hebben de volgende kenmerken.
-
De ontwikkelomgeving is gebaseerd op Linux en is afgeleid van Ubuntu 22.04.
-
Apache Maven 3.9.4 is geïnstalleerd.
- De Adobe adviseert gebruikers hun Geweven bewaarplaatsen bij te werken om HTTPS in plaats van HTTPte gebruiken.
-
De geïnstalleerde Java-versies zijn Oracle JDK 8u401 en Oracle JDK 11.0.22.
/usr/lib/jvm/jdk1.8.0_401
/usr/lib/jvm/jdk-11.0.22
-
Standaard wordt de omgevingsvariabele
JAVA_HOME
ingesteld op/usr/lib/jvm/jdk1.8.0_401
, die Oracle JDK 8u401 bevat. Zie de sectie Afwisselend Gemaakte Versie van JDK van de Uitvoeringvoor 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 build wordt uitgevoerd in een ongerepte omgeving. De bouwstijlcontainer houdt geen staat tussen uitvoeringen.
-
Maven wordt altijd uitgevoerd met deze 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 naamadobe-public
. Zie de openbaar Maven bewaarplaats van de Adobevoor meer details. -
Node.js 18 is beschikbaar voor front eindpijpleidingen.
jacoco-maven-plugin
definieert, moet de gebruikte versie ten minste 0.7.5.201505241946
zijn.Door HTTPS aangebrachte opslagruimten https-maven
Cloud Manager 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-version
Door gebrek, maken de projecten die door Cloud Manager worden gebouwd Oracle 8 JDK. Klanten die een alternatieve JDK willen gebruiken, hebben twee opties.
Maven Toolketins maven-toolchains
De Gemaakt stop-in Toolketenslaat projecten een specifieke JDK (of toolchain) selecteren om in de context van toolketens-bewuste Gewenste stop-ins te gebruiken. Dit proces wordt uitgevoerd in het pom.xml
dossier van het project door een verkoper en versiewaarde te specificeren. Een voorbeeldsectie in het bestand pom.xml
is als volgt:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>11</version>
<vendor>oracle</vendor>
</jdk>
</toolchains>
</configuration>
</plugin>
Dit proces veroorzaakt alle toolketins-bewuste Geweven stop-ins om het Oracle JDK, versie 11 te gebruiken.
Wanneer u deze methode gebruikt, wordt Maven zelf nog steeds uitgevoerd met de standaard-JDK (Oracle 8) en wordt de omgevingsvariabele JAVA_HOME
niet gewijzigd. Daarom het controleren van of het handhaven van de versie van Java door stop-ins zoals Apache Maven Plug-in van de Enforcerwerkt niet en dergelijke stop-ins moet niet worden gebruikt.
De momenteel beschikbare combinaties leverancier/versie zijn:
Alternatieve JDK-versie voor uitvoering alternate-maven
Het is ook mogelijk om Oracle 8 of Oracle 11 als JDK voor de volledige Geweven uitvoering te selecteren. In tegenstelling tot de opties van toolketins, verandert dit JDK die voor alle stop-ins wordt gebruikt tenzij de toolketenconfiguratie ook wordt geplaatst, in welk geval de toolketenconfiguratie nog wordt toegepast voor toolketens-bewuste Geweven stop-ins. Dientengevolge, controlerend en uitvoerend de versie van Java gebruikend de Apache Maven Plug-in van de Enforcerwerken.
Hiertoe maakt u een bestand met de naam .cloudmanager/java-version
in de vertakking Git-opslagruimte die door de pijplijn wordt gebruikt. Dit bestand kan de inhoud 11
of 8
hebben. 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
. Wanneer 8
wordt opgegeven, wordt Oracle 8 gebruikt en wordt de JAVA_HOME
omgevingsvariabele ingesteld op /usr/lib/jvm/jdk1.8.0_401
.
Omgevingsvariabelen environment-variables
Standaardomgevingsvariabelen standard-environ-variables
In sommige gevallen, kunt u het noodzakelijk vinden om het bouwstijlproces te variëren dat op informatie over het programma of de pijpleiding wordt gebaseerd.
Als u bijvoorbeeld een gereedschap zoals gulp voor JavaScript-minificatie gebruikt, kunt u de voorkeur geven aan verschillende miniatuurniveaus voor ontwikkelings- en productieomgevingen.
Om dit te steunen, voegt Cloud Manager 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
Beschikbaarheid van standaardomgevingsvariabele availability
Standaardomgevingsvariabelen kunnen op een aantal plaatsen worden gebruikt.
Auteur-, voorproef- en publicatieomgevingen author-preview-publish
Zowel normale omgevingsvariabelen als geheimen kunnen worden gebruikt in de ontwerpomgeving, voorvertoningsomgeving en in de publicatieomgeving.
Dispatcher dispatcher
Slechts kunnen de regelmatige milieuvariabelen met Dispatcherworden gebruikt. Geheimen kunnen niet worden gebruikt.
Omgevingsvariabelen kunnen echter niet worden gebruikt in IfDefine
-instructies.
OSGi-configuraties osgi
Zowel kunnen de regelmatige milieuvariabelen als de geheimen in configuraties OSGiworden gebruikt.
Pipetvariabelen pipeline-variables
In sommige gevallen, kan uw bouwstijlproces van specifieke configuratievariabelen afhangen die om in de bewaarplaats van het Git ongepast zouden zijn te plaatsen of tussen pijpleidinguitvoeringen moeten variëren gebruikend de zelfde tak.
Cloud Manager staat voor deze variabelen toe om door Cloud Manager API of Cloud Manager CLI op een per-pijpleidingsbasis worden gevormd. Variabelen kunnen worden opgeslagen als normale tekst of in rust worden versleuteld. In beide gevallen worden variabelen binnen de ontwikkelomgeving beschikbaar gemaakt als een omgevingsvariabele, waarnaar vervolgens kan worden verwezen vanuit het pom.xml
-bestand of andere constructiescripts.
Om een variabele te plaatsen die CLI gebruiken, stel een bevel in werking gelijkend op het volgende.
$ aio cloudmanager:set-pipeline-variables PIPELINEID --variable MY_CUSTOM_VARIABLE test
Huidige variabelen kunnen worden vermeld gebruikend een bevel gelijkend op het volgende.
$ aio cloudmanager:list-pipeline-variables PIPELINEID
Variabelen moeten aan bepaalde beperkingen voldoen.
- Namen van variabelen mogen alleen alfanumerieke tekens en het onderstrepingsteken (
_
) bevatten.- Volgens de conventie moeten de namen allemaal in hoofdletters staan.
- Er is een grens van 200 variabelen per pijpleiding.
- Elke naam moet minder dan 100 tekens bevatten.
- Elke tekenreekswaarde moet uit minder dan 2048 tekens bestaan.
- Elke
secretString
-waarde moet uit minder dan 500 tekens bestaan.
Bij gebruik in een Maven pom.xml
-bestand is het doorgaans handig om deze variabelen toe te wijzen aan Maven-eigenschappen met een syntaxis die lijkt op de volgende.
<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>
Extra systeempakketten installeren installing-additional-system-packages
Om volledig te functioneren, vereisen sommige bouwstijlen extra systeempakketten worden geïnstalleerd. Een build kan bijvoorbeeld een Python- of Ruby-script aanroepen en moet daarom een geschikte taalinterpreter hebben geïnstalleerd. Dit scenario kan worden gedaan door exec-maven-plugin
te roepen APT aan te halen. Deze uitvoering moet doorgaans worden opgenomen in een Cloud Manager-specifiek Maven-profiel. Als u bijvoorbeeld Python wilt installeren, kunt u het volgende doen:
<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>
Deze techniek kan ook worden gebruikt om taalspecifieke pakketten te installeren. Dat wil zeggen: gebruik gem
voor RubyGems of pip
voor Python Packages.