ビルド環境 build-environment
Cloud Managerがコードのビルドとテストに使用する専用のビルド環境について説明します。
環境の詳細 details
Cloud Manager のビルド環境には、次の属性があります。
-
ビルド環境は Linux ベースで、Ubuntu 22.04 から派生しています。
-
Apache Maven 3.9.4 がインストールされています。
- アドビでは、ユーザーに HTTP ではなく HTTPS を使用するように Maven リポジトリを更新することをお勧めします。
-
インストールされる Java バージョンは Oracle JDK 8u401 と Oracle JDK 11.0.22 です。
/usr/lib/jvm/jdk1.8.0_401/usr/lib/jvm/jdk-11.0.22
-
デフォルトでは、
JAVA_HOME環境変数は/usr/lib/jvm/jdk1.8.0_401に設定されています。これには、Oracle JDK 8u401 が含まれています。 詳しくは、代替Maven実行JDK バージョン セクションを参照してください。 -
追加の必要なシステムパッケージがインストールされます。
bzip2unziplibpngimagemagickgraphicsmagick
-
その他のパッケージは、追加システムパッケージのインストール の節で説明されているように、ビルド時にインストールされます。
-
あらゆる構築は、新しい環境で行われます。 ビルドコンテナは、実行間でデータを保持しません。
-
Mavenは、次の3つのコマンドで実行されます。
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 は、
settings.xmlファイルを使用してシステムレベルで設定されます。このファイルには、adobe-publicというプロファイルを使用したアドビの公開アーティファクトリポジトリが自動的に含まれています 詳しくは、アドビの公開 Maven リポジトリを参照してください。 -
Node.js 18 は、フロントエンドパイプラインで使用できます。
.cloudmanager/java-versionを通じてのみサポートされるようになりました。 詳しくは、特定のJava バージョンの使用を参照してください。jacoco-maven-pluginの特定のバージョンを定義していませんが、使用するバージョンは少なくとも0.7.5.201505241946である必要があります。HTTPS Maven リポジトリ https-maven
Cloud Manager 2023.10.0は、ビルド環境のローリングアップデート(2023.12.0 リリースで完了)を開始しました。これには、Maven 3.8.8へのアップデートが含まれています。 Maven 3.8.1で導入された変更は、潜在的な脆弱性に対処するためのセキュリティ強化でした。 具体的には、Maven リリースノートで説明するように、Maven では安全でないすべての http://* ミラーをデフォルトで無効にするようになりました。
一部のユーザーは、安全でないHTTP接続を使用するMaven リポジトリからアーティファクトをダウンロードする際に、ビルド手順で問題が発生します。
アップデートされたバージョンでスムーズなエクスペリエンスを実現するために、アドビでは、ユーザーが Mavenリポジトリを更新して HTTP ではなく HTTPS を使用することをお勧めします。 この調整は、安全な通信プロトコルに向けた業界の移行をサポートし、安全で信頼性の高いビルドプロセスを維持します。
特定の Java バージョンの使用 using-java-version
デフォルトでは、Cloud Manager ビルドプロセスでビルドされたプロジェクトは、Oracle 8 JDK を使用します。 代替JDKを使用したいお客様は、Maven実行プロセス全体で代替JDK バージョンを選択できます。
Cannot find matching toolchain definitions.で失敗することに注意してください。.cloudmanager/java-version ファイルを使用して、代わりにJDK 11、17、または21を選択してください。- ソースコントロールにコミットされている
org.apache.maven.plugins:maven-toolchains-pluginエントリとtoolchains.xmlをすべて削除して、ツールチェーンを削除します。 - 代替Maven実行JDK バージョン の説明に従って、
.cloudmanager/java-version(21、17または11)のJDKを選択します。 - Adobeでは、Cloud Manager ビルドキャッシュをクリアするか、新しいパイプライン実行をトリガーすることをお勧めします。
Maven 実行の代替 JDK バージョン alternate-maven
Mavenの実行全体のJDKとして、Oracle 8またはOracle 11を選択できます。 この方法では、すべてのプラグインに使用されるJDKが変更されます。 その結果、Apache Maven Enforcer Plug-inを使用したJava バージョンの確認と適用がサポートされます。
このプロセスを実行するには、パイプラインで使用されるGit リポジトリブランチに.cloudmanager/java-versionという名前のファイルを作成します。 このファイルの内容は 11 か 8 のどちらかにすることができます。 その他の値は無視されます。 11が指定されている場合、システムはOracle 11を使用し、JAVA_HOME環境変数を/usr/lib/jvm/jdk-11.0.22に設定します。 8が指定されている場合、システムはOracle 8を使用し、JAVA_HOME環境変数を/usr/lib/jvm/jdk1.8.0_401に設定します。
環境変数 environment-variables
標準環境変数 standard-environ-variables
場合によっては、プログラムやパイプラインに関する情報に基づいてビルドプロセスを変更する必要があります。
例えば、JavaScriptの縮小にgulpなどのツールを使用する場合、開発環境とステージング環境および実稼動環境で異なる縮小レベルを使用します。
これをサポートするために、Cloud Manager では、実行ごとに標準環境変数をビルドコンテナに追加します。
CM_BUILDtrue に設定BRANCHCM_PIPELINE_IDCM_PIPELINE_NAMECM_PROGRAM_IDCM_PROGRAM_NAMEARTIFACTS_VERSION標準環境変数の可用性 availability
標準環境変数は、様々な場所で使用できます。
オーサー、プレビュー、パブリッシュの各環境 author-preview-publish
オーサー、プレビュー、パブリッシュの各環境では、通常の環境変数とシークレットの両方を使用できます。
Dispatcher dispatcher
Dispatcher で使用できるのは、通常の環境変数のみです。 秘密鍵は使用できません。
ただし、環境変数は IfDefine ディレクティブでは使用できません。
OSGi 設定 osgi
OSGi 設定では、通常の環境変数とシークレットの両方を使用できます。
パイプライン変数 pipeline-variables
場合によっては、ビルドプロセスは特定の設定変数に依存します。 これらの変数は、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>
追加のシステムパッケージのインストール installing-additional-system-packages
正常に機能するには、追加のシステムパッケージをインストールする必要があるビルドもあります。 例えば、ビルドは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を使用します。