Container Registry Enterprise Edition は、ソースコードからコンテナイメージを自動的にビルドするための、安全で効率的な継続的インテグレーションパイプラインを提供します。Dockerfile に基づいて構築ルールを設定することで、コードがコミットされたときにイメージを自動的にビルドし、イメージリポジトリにプッシュできます。
前提条件
-
Container Registry の Enterprise Edition インスタンスを作成済みであること。詳細については、「Enterprise Edition インスタンスの作成」をご参照ください。
-
ソースコードリポジトリに Dockerfile が含まれていること。
背景情報
コンテナイメージのビルドサービスは、以下の特徴を提供します。
-
セキュリティ:このサービスは、各ビルドタスクを分離された専用環境に割り当てます。
-
安定性:各ビルドは専用の環境で実行されるため、同じソースコードリポジトリから複数回ビルドする場合でも、ビルド時間は安定し、一貫しています。
-
インテリジェントな高速化:
-
デフォルトでは、このサービスは BuildKit を使用します。これは、多段階ビルドに非常に効果的で、幅広いビルド機能をサポートする強力なビルドツールです。
-
このサービスは、頻繁に使用されるベースイメージをキャッシュします。これにより、ビルドプロセス中にこれらのイメージをプルする必要がなくなり、ビルド時間が大幅に短縮されます。
-
このサービスは、リモートビルドキャッシュを使用してビルドプロセスを高速化します。
-
コンテナイメージのビルドサービスは、さまざまなコードホスティングプラットフォームとイメージ高速化機能をサポートしています。
-
コードホスティングプラットフォーム:このサービスは、以下のコードホスティングプラットフォームをサポートしています。
-
イメージの高速化:イメージの遅延読み込みを有効にできます。標準イメージをプッシュすると、システムは自動的に高速化バージョンを作成します。詳細については、「コンテナイメージの遅延読み込み」をご参照ください。
ステップ 1: コードホスティングプラットフォームの接続
イメージをビルドする前に、コードホスティングプラットフォームを接続する必要があります。詳細については、「コードホスティングプラットフォームの接続」をご参照ください。
-
ローカルリポジトリからのイメージビルドはサポートされていません。
-
VPC 内のプライベート GitLab リポジトリに接続するには、「VPC でのセキュアビルド機能を使用したコンテナイメージのビルド」をご参照ください。
ステップ 2: 名前空間の作成
Container Registry コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
-
左側のナビゲーションウィンドウで、インスタンス を選択します。
-
インスタンス ページで、対象の Enterprise Edition インスタンスをクリックします。
-
インスタンス管理ページの左側のナビゲーションウィンドウで、 を選択します。
-
名前空間 ページで、名前空間を作成 をクリックします。
-
名前空間を作成 サイドバーで、名前空間 名、リポジトリの自動作成 の オン または 閉じる を設定し、OK をクリックします。
リポジトリの自動作成 で オン を選択した場合は、以下の手順に従います。
UI 要素
説明
リポジトリのタイプ
-
パブリック:デフォルトでは、ユーザーがパブリックイメージをプルするには、Enterprise Edition インスタンスにログインする必要があります。匿名プルを許可するには、インスタンスの匿名アクセスを有効にする必要があります。
データセキュリティを確保するために、リポジトリタイプを [非公開] に設定することを推奨します。
-
プライベート:プライベートイメージをプルするには、ユーザーは Enterprise Edition インスタンスにログインし、必要なプル権限を持っている必要があります。
イメージバージョンは変更されません
柔軟。 このオプションを選択すると、このリポジトリ内の
latest以外のイメージタグは上書きできなくなり、コンテナイメージタグの一貫性が確保されます。高速化イメージ
機能が閉じるかどうかを指定します。 チェックボックスをオンにすると、
_acceleratedサフィックスが付いた高速イメージタグがリポジトリに自動的に生成されます。 -
ステップ 3: イメージリポジトリの作成
イメージの高速化は、Standard Edition および Advanced Edition インスタンスでのみ利用可能です。Basic Edition インスタンスを Standard または Advanced Edition にアップグレードすることを推奨します。
イメージリポジトリを作成し、ソースコードリポジトリに接続します。このサービスは、接続されたソースコードリポジトリからビルドされたイメージをこのリポジトリにプッシュします。
Container Registry コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
-
左側のナビゲーションウィンドウで、インスタンス を選択します。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
-
インスタンス詳細ページの左側のナビゲーションウィンドウで、 を選択します。
- [リポジトリ] ページで、[リポジトリの作成] をクリックします。
-
リポジトリ情報 ウィザードで、名前空間、リポジトリ名、リポジトリのタイプ、イメージのバージョン、高速化イメージ、サマリー、説明 を設定し、次へ をクリックします。
-
コードソース ステップで、コードソース、ビルド設定、ビルドルール を設定し、リポジトリの作成 をクリックします。
パラメーター
説明
コードソース
コードのソースを選択します。
ビルド設定
-
コード変更時にイメージを自動ビルド:このオプションを有効にすると、指定したブランチにコードがコミットされたときに自動的にビルドがトリガーされます。
-
海外のソースをインテリジェントにビルド:この機能は、ビルド中に中国本土以外のソースからデータをプルするために高速化リンクを使用します。プロジェクトがコードソースとして GitHub または Bitbucket を使用している場合、または Dockerfile 内のファイルを中国本土以外のサイトからダウンロードする必要があるが、クロスボーダーネットワークが不安定な場合は、海外のソースをインテリジェントにビルド を使用できます。
-
キャッシュなしでビルド:このオプションを選択すると、ビルドごとにベースの依存関係イメージが強制的に再プルされるため、ビルド時間が増加する可能性があります。キャッシュなしでビルド を無効にすると、イメージのビルド時間を短縮できます。
リポジトリ ページで、対象のイメージリポジトリをクリックします。左側のナビゲーションウィンドウに ビルド が表示されている場合、イメージリポジトリはソースコードリポジトリに正常に接続されています。
-
ステップ 4: イメージのビルド
リポジトリ管理ページに ビルド が表示されない場合、ソースコードリポジトリへの接続に失敗しています。「ステップ 1」を参照して再度接続してください。
Container Registry コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
-
左側のナビゲーションウィンドウで、インスタンス を選択します。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
-
インスタンス管理ページの左側のナビゲーションウィンドウで、 を選択します。
-
リポジトリ ページで、対象のリポジトリを見つけ、管理 列の 操作 をクリックします。
-
左側のナビゲーションウィンドウで、ビルド をクリックします。ビルドルール セクションで、ビルドルールの追加 をクリックします。ビルド情報 ステップで、パラメーターを設定し、次へ をクリックします。
パラメーター
説明
タイプ
ビルドのソースタイプを指定します。有効な値はブランチとタグです。
ブランチ/タグ
ブランチまたはタグを選択または入力します。正規表現がサポートされています。たとえば、正規表現が
release-(?<imageTag>\w*)の場合、release-v1ソースコードへの変更により、タグv1を持つイメージのビルドが自動的にトリガーされます。手動ビルドはサポートされていません。詳細については、「正規表現の名前付きキャプチャグループ」をご参照ください。説明正規表現を設定した場合、自動ビルドのみがサポートされます。手動ビルドはサポートされていません。
コンテキストディレクトリをビルド
Dockerfile を含むディレクトリへの相対パス。パスは、選択したブランチまたはタグのルートからの相対パスです。たとえば、ブランチが master で、Dockerfile が master ブランチのルートにある場合、ビルドコンテキストディレクトリは
/です。Dockerfile ファイル名
Dockerfile の名前。デフォルト値は
Dockerfileです。 -
イメージのバージョン ステップで、パラメーターを設定し、保存 をクリックしてから 次へ をクリックします。
説明構成を追加 をクリックして、さらにイメージタグを追加できます。最大 3 つのイメージタグを追加できます。
パラメーター
説明
イメージのバージョン
イメージタグ (例:
latest) を指定します。 [ブランチ/タグ] フィールドから取得した値を使用することもできます。ビルド時間
コードプッシュのタイムスタンプ (UTC+8) です。 フォーマットは
20201015と202010151613の 2 種類が利用できます。説明このパラメーターはオプションです。 選択した場合、自動ビルドのみがサポートされ、手動ビルドはサポートされません。
コミット ID
最新のコードプッシュのコミット ID です。 デフォルトでは、先頭 6 文字が使用されます。 スライダーを調整して文字数を設定できます。
説明このパラメーターはオプションです。 選択した場合、自動ビルドのみがサポートされ、手動ビルドはサポートされません。
-
構成をビルド ステップで、ビルドパラメーターを設定し、OK をクリックします。
パラメーター
説明
アーキテクチャの構築
ビルドアーキテクチャを選択します。並列ビルドがサポートされています。1 つのイメージタグが複数のアーキテクチャのイメージに対応できます。
タイプをビルド
イメージビルドのランタイムパラメーター。ビルドパラメーターは、大文字と小文字を区別するキーと値のペアで構成されます。最大 20 個のビルドパラメーターを設定できます。ビルドパラメーターを設定して Dockerfile 内の環境変数を変更することで、同じ Dockerfile から異なる出力を生成できます。
-
ビルドルールをトリガーします。
ビルドルールは、次のいずれかの方法でトリガーできます。
-
ビルド ページの ビルドルール セクションで、対象のビルドルールを見つけ、操作 列の ビルド をクリックします。
-
ソースコードリポジトリの設定済みブランチにコードをコミットします。
説明-
ビルド ページの ビルドログ セクションで、ビルドタスクをキャンセルするには、対象のタスクを見つけ、操作 列の キャンセル をクリックします。
-
ビルド ページの ビルドログ セクションで、ビルドプロセスのログを表示するには、対象のタスクを見つけ、操作 列の ログ をクリックします。
左側のナビゲーションウィンドウで イメージのバージョン をクリックします。ビルドされたイメージが表示されていれば、イメージのビルドは成功です。
-
例 1: 固定ブランチからのビルド
main という名前の固定ブランチからイメージをビルドするためのビルドルールパラメーターの例を次に示します。
-
タイプ:ブランチ
-
[ブランチ/タグ]:main
-
コンテキストディレクトリをビルド:/
-
Dockerfile ファイル名: Dockerfile
-
イメージのバージョン: latest
main ブランチのソースコードに変更が加えられたとき、または手動で [ビルド] をクリックしたときに、イメージのビルドがトリガーされます。作業ディレクトリは / で、ビルドではこのディレクトリにある Dockerfile という名前のファイルが使用されます。生成されたイメージには latest というタグが付けられます。ビルドルールを次の図に示します。

例 2: 正規表現に一致するブランチからのビルド
正規表現に一致するブランチからイメージをビルドするためのビルドルールパラメーターの例を次に示します。
-
タイプ:ブランチ
-
[ブランチ/タグ]:release-(?<imageTag>\w*)
-
コンテキストディレクトリをビルド:/
-
Dockerfile ファイル名:Dockerfile
-
イメージのバージョン:${imageTag}
-
ビルド時間: yyyyMMddHHmm
-
[コミット ID]:30
名前が release- で始まるブランチのソースコードを変更すると、システムはイメージのビルドをトリガーします。ビルドコンテキストはルートディレクトリ (/) で、使用される Dockerfile はそのディレクトリにある Dockerfile という名前のファイルです。
たとえば、release-v1 ブランチのソースコードに変更があったとします。正規表現 release-(?<imageTag>\w*) は、ブランチ名から v1 をキャプチャし、それを imageTag 変数に割り当てます。サービスはこれをイメージタグとして使用します。ビルドが完了すると、結果のイメージタグは v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45 になります。ビルドルールを次の図に示します。

関連操作
イメージをビルドした後、次の操作を実行できます。
-
シークレットを使用せずに ACK クラスターからイメージをプルします。詳細については、「aliyun-acr-credential-helper コンポーネントを使用したコンテナイメージのプル」をご参照ください。
-
イメージを使用して ACK クラスターにアプリケーションを作成します。詳細については、「ステートレス Deployment の作成」をご参照ください。
-
ACK クラスターで P2P 高速化機能を使用してイメージのプルを高速化します。詳細については、「ACK または ACK Serverless クラスターでの P2P 高速化の使用」をご参照ください。