5.3. カスタムビルド
カスタムビルドストラテジーにより、開発者はビルドプロセス全体を対象とする特定のビルダーイメージを定義できます。独自のビルダーイメージを使用することにより、ビルドプロセスをカスタマイズできます。
カスタムビルダーイメージは、RPM またはベースイメージの構築など、ビルドプロセスのロジックに組み込まれるプレーンなコンテナーイメージです。
カスタムビルドは高いレベルの権限で実行されるため、デフォルトではユーザーが利用することはできません。クラスター管理者のパーミッションを持つ信頼できるユーザーのみにカスタムビルドを実行するためのアクセスが付与される必要があります。
5.3.1. カスタムビルドの FROM イメージの使用
customStrategy.from
セクションを使用して、カスタムビルドに使用するイメージを指定できます。
手順
customStrategy.from
セクションを設定するには、以下を実行します。strategy: customStrategy: from: kind: "DockerImage" name: "openshift/sti-image-builder"
5.3.2. カスタムビルドでのシークレットの使用
すべてのビルドタイプに追加できるソースおよびイメージのシークレットのほかに、カスタムストラテジーを使用することにより、シークレットの任意のリストをビルダー Pod に追加できます。
手順
各シークレットを特定の場所にマウントするには、
strategy
YAML ファイルのsecretSource
およびmountPath
フィールドを編集します。strategy: customStrategy: secrets: - secretSource: 1 name: "secret1" mountPath: "/tmp/secret1" 2 - secretSource: name: "secret2" mountPath: "/tmp/secret2"
5.3.3. カスタムビルドの環境変数の使用
環境変数をカスタムビルドプロセスで利用可能にするには、環境変数をビルド設定の customStrategy
定義に追加できます。
ここに定義された環境変数は、カスタムビルドを実行する Pod に渡されます。
手順
ビルド時に使用されるカスタムの HTTP プロキシーを定義します。
customStrategy: ... env: - name: "HTTP_PROXY" value: "http://myproxy.net:5187/"
ビルド設定で定義された環境変数を管理するには、以下のコマンドを入力します。
$ oc set env <enter_variables>
5.3.4. カスタムビルダーイメージの使用
OpenShift Container Platform のカスタムビルドストラテジーにより、ビルドプロセス全体を対象とする特定のビルダーイメージを定義できます。パッケージ、JAR、WAR、インストール可能な ZIP、ベースイメージなどの個別のアーティファクトを生成するためにビルドが必要な場合は、カスタムビルドストラテジーを使用してカスタムビルダーイメージを使用します。
カスタムビルダーイメージは、RPM またはベースのコンテナーイメージの構築など、ビルドプロセスのロジックに組み込まれるプレーンなコンテナーイメージです。
さらに、カスタムビルダーは、単体または統合テストを実行する CI/CD フローなどの拡張ビルドプロセスを実装できます。
5.3.4.1. カスタムビルダーイメージ
呼び出し時に、カスタムのビルダーイメージは、ビルドの続行に必要な情報が含まれる以下の環境変数を受け取ります。
変数名 | 説明 |
---|---|
|
|
| ビルドするソースが含まれる Git リポジトリーの URL |
|
|
| ビルド時に使用する Git リポジトリーのサブディレクトリーを指定します。定義された場合にのみ表示されます。 |
| ビルドする Git 参照 |
| このビルドオブジェクトを作成した OpenShift Container Platform のマスターのバージョン |
| イメージをプッシュするコンテナーイメージレジストリー |
| ビルドするイメージのコンテナーイメージタグ名 |
|
|
5.3.4.2. カスタムビルダーのワークフロー
カスタムビルダーイメージの作成者は、ビルドプロセスを柔軟に定義できますが、ビルダーイメージは、OpenShift Container Platform 内でビルドを実行するために必要な以下の手順に従う必要があります。
-
Build
オブジェクト定義に、ビルドの入力パラメーターの必要情報をすべて含める。 - ビルドプロセスを実行する。
- ビルドでイメージが生成される場合には、ビルドの出力場所が定義されていれば、その場所にプッシュする。他の出力場所には環境変数を使用して渡すことができます。