De ontwikkelomgeving
- Onderwerpen:
- Cloud Manager
Gemaakt voor:
- Beheerder
Leer over de gespecialiseerde bouwstijlomgeving die de gebruikers van Cloud Manager om uw code te bouwen en te testen.
Omgevingsdetails
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.
- 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 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 geconfigureerd op systeemniveau met een
settings.xml
-bestand. Dit bestand bevat automatisch de openbare Adobe-gegevensopslagruimte met een profiel met de naamadobe-public
. Zie Adobe openbare Gemaakt bewaarplaatsvoor 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
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.
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
Standaard wordt voor projecten die door de Cloud Manager worden gemaakt, gebruikgemaakt van de Oracle 8 JDK. Klanten die een alternatieve JDK willen gebruiken, hebben twee opties.
Maven Toolketins
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 zorgt ervoor dat alle plug-ins die zich bewust zijn van de toolketens, de Oracle JDK versie 11 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
Het is ook mogelijk om Oracle 8 of Oracle 11 te selecteren als JDK voor de volledige uitgevoerde Maven. 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. Als 11
is opgegeven, gebruikt het systeem Oracle 11 en stelt de JAVA_HOME
omgevingsvariabele in op /usr/lib/jvm/jdk-11.0.22
. Als 8
is opgegeven, gebruikt het systeem Oracle 8 en stelt de JAVA_HOME
omgevingsvariabele in op /usr/lib/jvm/jdk1.8.0_401
.
Omgevingsvariabelen
Standaardomgevingsvariabelen
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
Standaardomgevingsvariabelen kunnen op een aantal plaatsen worden gebruikt.
Auteur-, voorproef- en publicatieomgevingen
Zowel normale omgevingsvariabelen als geheimen kunnen worden gebruikt in de ontwerpomgeving, voorvertoningsomgeving en in de publicatieomgeving.
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
Zowel kunnen de regelmatige milieuvariabelen als de geheimen in configuraties OSGiworden gebruikt.
Pipetvariabelen
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
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.