ビルド環境について

ビルド環境の詳細

Cloud Manager では、専用のビルド環境を使用して、コードのビルドおよびテストをおこないます。この環境には次のような特性があります。

  • ビルド環境は Linux ベースで、Ubuntu 18.04 から派生しています。

  • Apache Maven 3.6.0 がインストールされています。

  • インストールされる Java バージョンは Oracle JDK 8u202 および 11.0.2 です。

  • 必要な追加のシステムパッケージが、次のようにいくつかインストールされています。

    • bzip2
    • unzip
    • libpng
    • imagemagick
    • graphicsmagick
  • 後述されている通り、これ以外にも、ビルド時にパッケージがインストールされる場合があります。

  • すべてのビルドは、Pristine 環境で実行されます。ビルドコンテナは実行から次回の実行までの間、状態を保持しません。

  • Maven は常に次の 3 つのコマンドで実行します。

    • 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 packageco-maven-plugin:prepare-agent package
  • Maven は、settings.xml ファイルを使用してシステムレベルで設定されます。このファイルには、アドビの公開​アーティファクト​リポジトリが自動的に含まれています(詳しくは、アドビの公開 Maven リポジトリを参照してください)。

メモ

Cloud Manager では、jacoco-maven-plugin の特定のバージョンは定義されませんが、0.7.5.201505241946 異常のバージョンを使用する必要があります。

Java 11 サポートの使用

Cloud Manager で、Java 8 と Java 11 の両方を使用したカスタマープロジェクトの作成がサポートされるようになりました。デフォルトでは、プロジェクトは Java 8 を使用して構築されます。

プロジェクトで Java 11 を使用するお客様は、Apache Maven Toolchains プラグインを使用して使用できます。

これをおこなうには、pom.xml ファイルに次のような <plugin> エントリを追加します。

<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>
メモ

サポートされているベンダー値は oraclesun で、サポートされているバージョン値は 1.81.11 および 11 です。

メモ

Cloud Manager プロジェクトのビルドでは、引き続き Java 8 を使用して Maven を呼び出します。そのため、Apache Maven Enforcer プラグインなどのプラグインを介してツールチェーンプラグインに設定された Java バージョンを確認または適用することはできません。これらのプラグインは使用しないでください。

環境変数

標準環境変数

場合によっては、プログラムやパイプラインに関する情報に基づいてビルドプロセスを変更する必要があります。

例えば、gulp のようなツールを使用して、ビルド時の JavaScript の縮小がおこなわれている場合、ステージと実稼働用とは異なる、開発環境用のビルド時の縮小レベルを使用したくなる場合があります。

これをサポートするために、Cloud Manager は、これらの標準環境変数を各実行のビルドコンテナに追加します。

変数名 定義
CM_BUILD 常に「true」に設定
ブランチ 実行用に設定されたブランチ
CM_PIPELINE_ID 数値パイプライン識別子
CM_PIPELINE_NAME パイプライン名
CM_PROGRAM_ID 数値プログラム識別子
CM_PROGRAM_NAME プログラム名
ARTIFACTS_VERSION ステージまたは実稼動パイプラインの場合、Cloud Manager で生成された合成バージョン
CM_AEM_PRODUCT_VERSION リリース名

パイプライン変数

場合によっては、顧客のビルドプロセスが、特定の設定変数に依存している可能性があります。これらの変数は 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

変数名に使用できるのは、英数字と下線(_)のみです。慣例では、名前はすべて大文字である必要があります。パイプラインあたりの変数は最大 200 個という制限があります。それぞれの名前は 100 文字未満、それぞれの値は文字列型変数の場合は 2048 文字未満、secretString 型変数の場合は 500 文字未満にする必要があります。

通常、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 環境にシステムパッケージをインストールする必要がある場合は、アドビ担当者にお問い合わせください。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free