Cloud Manager ユーザーがコードを作成およびテストするための専用のビルド環境について説明します。
Cloud Manager のビルド環境には、次の属性があります。
JAVA_HOME
環境変数は /usr/lib/jvm/jdk1.8.0_202
に設定されています。これには、Oracle JDK 8u202 が含まれています。詳しくは、Maven 実行の代替 JDK バージョンの節を参照してください。bzip2
unzip
libpng
imagemagick
graphicsmagick
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
settings.xml
ファイルを使用してシステムレベルで設定されます。このファイルには、adobe-public
というプロファイルを使用したアドビの公開アーティファクトリポジトリが自動的に含まれています。
Cloud Manager では、jacoco-maven-plugin
の特定のバージョンは定義されませんが、0.7.5.201505241946
異常のバージョンを使用する必要があります。
Cloud Manager API の使用方法については、次の追加リソースを参照してください。
デフォルトでは、プロジェクトは、Oracle 8 JDK を使用して Cloud Manager ビルドプロセスでビルドされます。代替 JDK を使用する場合は、次の 2 つの選択肢があります。
Maven ツールチェーンプラグインでは、ツールチェーン対応の Maven プラグインのコンテキストで使用する特定の JDK(またはツールチェーン)をプロジェクトで選択できます。それには、プロジェクトの pom.xml
ファイルでベンダーとバージョン値を指定します。pom.xml
ファイルのサンプルセクションは次のとおりです。
<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>
これにより、すべてのツールチェーン対応 Maven プラグインで Oracle JDK バージョン 11 が使用されるようになります。
この方法を使用する場合、Maven 自体は引き続きデフォルト JDK(Oracle 8)を使用して実行され、JAVA_HOME
環境変数は変更されません。したがって、Apache Maven Enforcer Plugin などのプラグインによる Java バージョンの確認や強制は機能しないので、そのようなプラグインは使用しないでください。
現在利用可能なベンダー/バージョンの組み合わせは次のとおりです。
ベンダー | バージョン |
---|---|
oracle | 1.8 |
oracle | 1.11 |
oracle | 11 |
sun | 1.8 |
sun | 1.11 |
sun | 11 |
2022年4月以降、Oracle JDK は、AEM アプリケーションの開発と運用のためのデフォルト JDK になります。Cloud Manager のビルドプロセスは、Maven ツールチェーンで代替オプションを明示的に選択した場合でも、Oracle JDK の使用に自動的に切り替わります。詳しくは、4月のリリースノートを参照してください。
また、Maven 実行全体の JDK として Oracle 8 または Oracle 11 を選択することもできます。この場合は、ツールチェーンオプションとは異なり、ツールチェーン設定も指定される場合を除き、すべてのプラグインに使用される JDK が変更されます。ツールチェーン設定が指定される場合は、そのツールチェーン設定が引き続きツールチェーン対応 Maven プラグインに適用されます。その結果、Apache Maven Enforcer Plugin を使用して Java バージョンを確認および強制することができます。
それには、パイプラインで使用される Git リポジトリーブランチに .cloudmanager/java-version
というファイルを作成します。このファイルの内容は 11
か 8
のどちらかにすることができます。その他の値は無視されます。11
を指定した場合は、Oracle 11 が使用され、JAVA_HOME
環境変数が /usr/lib/jvm/jdk-11.0.2
に設定されます。8
を指定した場合は、Oracle 8 が使用され、JAVA_HOME
環境変数が /usr/lib/jvm/jdk1.8.0_202
に設定されます。
場合によっては、プログラムやパイプラインに関する情報に基づいてビルドプロセスを変更する必要があります。
例えば、gulp のようなツールを使用してビルド時の JavaScript の縮小が行われている場合、開発環境用にビルドする際には、ステージングや実稼働用にビルドする際とは異なる縮小レベルを使用した方がよいことがあります。
これをサポートするために、Cloud Manager では、実行ごとに標準環境変数をビルドコンテナに追加します。
変数名 | 説明 |
---|---|
CM_BUILD |
常に true に設定 |
BRANCH |
実行用に設定されたブランチ |
CM_PIPELINE_ID |
数値パイプライン識別子 |
CM_PIPELINE_NAME |
パイプライン名 |
CM_PROGRAM_ID |
数値プログラム識別子 |
CM_PROGRAM_NAME |
プログラム名 |
ARTIFACTS_VERSION |
ステージングパイプラインまたは実稼動パイプラインの場合、Cloud Manager で生成された合成バージョン |
標準環境変数は、様々な場所で使用できます。
オーサー、プレビュー、パブリッシュの各環境では、通常の環境変数とシークレットの両方を使用できます。
Dispatcher で使用できるのは、通常の環境変数のみです。シークレットは使用できません。
ただし、環境変数は IfDefine
ディレクティブでは使用できません。
デプロイする前に、Dispatcher をローカルで使用して、環境変数の使用を検証する必要があります。
OSGi 設定では、通常の環境変数とシークレットの両方を使用できます。
場合によっては、ビルドプロセスが、特定の設定変数に依存している可能性があります。これらの変数が Git リポジトリに配置するのに適していない場合や、同じブランチを使用するパイプライン実行間で変更する必要があります。
Cloud Manager では、これらの変数を Cloud Manager API または Cloud Manager CLI を介してパイプラインごとに設定できます。変数は、プレーンテキストとして保存することも、保存時に暗号化することもできます。どちらの場合も、変数はビルド環境内で環境変数として使用可能になり、変数は pom.xml
ファイル内または他のビルドスクリプト内から参照できます。
CLI を使用して変数を設定するには、次のようなコマンドを実行します。
$ aio cloudmanager:set-pipeline-variables PIPELINEID --variable MY_CUSTOM_VARIABLE test
現在の変数は、次のようなコマンドを使用して一覧表示できます。
$ aio cloudmanager:list-pipeline-variables PIPELINEID
変数は、一定の制限に従う必要があります。
_
)のみを含めることができます。
Maven pom.xml
ファイル内で使用する場合は、通常、次のような構文を使用して、これらの変数を Maven プロパティにマッピングすると便利です。
<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>
完全に機能させるために、一部のビルドでは追加のシステムパッケージをインストールする必要があります。例えば、Python や Ruby のスクリプトを呼び出す可能性のあるビルドでは、適切な言語インタープリターをインストールしておく必要があります。それには、exec-maven-plugin
を呼び出して、APT を起動します。この実行は通常、Cloud Manager 固有の Maven プロファイルにラップされます。例えば、Python は次のようにインストールします。
<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>
これと同じ方法を、RubyGems の gem
や Python パッケージの pip
など、特定言語用のパッケージのインストールにも使用できます。
この方法でシステムパッケージをインストールしても、Adobe Experience Manager の実行に使用されているランタイム環境にはインストールされません。AEM 環境にシステムパッケージをインストールする必要がある場合は、アドビ担当者にお問い合わせください。