Container Registry Enterprise Edition インスタンスを設定して、接続したリポジトリにコードをコミットするたびにコンテナイメージを自動的にビルドしてプッシュします。設定後、コードが変更されるたびにビルドがトリガーされ、イメージリポジトリにプッシュされます。
前提条件
開始する前に、以下をご確認ください:
Container Registry Enterprise Edition インスタンスを作成済みであること。詳細については、「Container Registry Enterprise Edition インスタンスへのイメージのプッシュとインスタンスからのイメージのプル」の「ステップ 1: Container Registry Enterprise Edition インスタンスの作成」セクションをご参照ください。
イメージをビルドするための Dockerfile がソースリポジトリに存在すること。
背景情報
Container Registry Enterprise Edition のイメージビルドサービスには、次の機能があります:
セキュリティ:各ビルドタスクは Alibaba Cloud アカウント専用の環境で実行され、テナント間の強力な分離を確保します。
安定性:ビルドタスクは専用環境で実行されるため、同じソースコードリポジトリからの複数回のビルドにわたってビルド時間が一貫しています。
インテリジェントな高速化:
ACR はデフォルトで BuildKit を使用します。BuildKit は、マルチステージビルドシナリオで堅牢な機能を備え、豊富なビルド機能に対応しています。
ACR は一般的なベースイメージをローカルでホストするため、ビルド時に外部ソースからプルする必要がなく、ビルド時間が短縮されます。
ACR はリモートキャッシュを使用して、イメージのビルドをさらに高速化します。
対応コードホスティングプラットフォーム
次の表に、Container Registry Enterprise Edition でサポートされているコードホスティングプラットフォームを示します:
ACR は次のコードホスティングプラットフォームに対応しています:
コードホスティングプラットフォーム
バージョン
バインド時の認証方法
イメージビルドのトリガーに関する制限
Gitee
すべてのバージョン
Gitee OAuth 認証
なし
GitHub
GitHub Developer バージョン
GitHub OAuth 認証
なし
GitLab
すべてのバージョン
パーソナルアクセストークン
なし
Bitbucket
すべてのバージョン
App パスワード
なし
説明Personal Edition インスタンスは Gitee にバインドできません。
高速化イメージの生成:コンテナイメージをプッシュした後、ACR はその高速化バージョンを自動的に生成できます。詳細については、「コンテナイメージのリソースのオンデマンド読み込み」をご参照ください。
ステップ 1: インスタンスとコードホスティングプラットフォームのバインド
インスタンスをコードホスティングプラットフォームにバインドして、ACR がソースコードにアクセスし、コードの変更時にビルドをトリガーできるようにします。手順の詳細は、「ソースコードホスティングプラットフォームのバインド」をご参照ください。
オンプレミスのコードリポジトリからイメージをビルドすることはできません。
VPC 内のプライベート GitLab コードリポジトリをバインドするには、「VPC 内でのコンテナイメージのビルド」をご参照ください。
ステップ 2: 名前空間の作成
名前空間を作成して、イメージリポジトリを整理します。リポジトリの自動作成を有効にすると、この名前空間配下のすべてのリポジトリに適用されるデフォルト設定を構成できます。
Container Registry コンソールにログインします。
上部メニューで、リージョンを選択します。
左側メニューで、[インスタンス] をクリックします。
[インスタンス] ページで、名前空間を作成する Enterprise Edition インスタンスをクリックします。
左側メニューで、[リポジトリ] > [名前空間] を選択します。
[名前空間] ページで、[名前空間の作成] をクリックします。
[名前空間の作成] サイドバーで、[名前空間] を設定し、[リポジトリの自動作成] を [オン] または [オフ] に設定します。その後、[確認] をクリックします。
[リポジトリの自動作成] を [オン] に設定した場合は、次のパラメーターを設定します:
パラメーター
説明
リポジトリタイプ
[Public] または [Private] を選択します。パブリック:デフォルトでは、パブリックイメージをプルするには、ユーザーがインスタンスにログインする必要があります。匿名のプルを許可するには、インスタンスのパブリック匿名プル設定を有効にします。パブリックリポジトリは権限のないユーザーでもプルできるため、データを保護するにはリポジトリをプライベートに設定します。プライベート:ユーザーは、プライベートイメージをプルする前に、インスタンスにログインし、プル権限が必要です。
不変のイメージタグ
[Flexible] または [Immutable] を選択します。[Immutable] に設定すると、latest を除くすべてのイメージタグは上書きできなくなります。
高速化イメージ
有効にすると、イメージがプッシュされた後、各イメージの高速化バージョンが自動的に生成されます。高速化イメージのタグには、_accelerated サフィックスが追加されます。
ステップ 3: イメージリポジトリの作成
高速化イメージは、Container Registry Standard Edition または Advanced Edition インスタンスでのみビルドできます。高速化イメージをビルドする前に、Basic Edition インスタンスを Standard Edition または Advanced Edition にアップグレードしてください。
イメージリポジトリを作成し、ソースコードリポジトリにバインドします。そのソースコードリポジトリからビルドされたすべてのイメージは、このイメージリポジトリにプッシュされます。
Container Registry コンソールにログインします。
上部メニューで、リージョンを選択します。
左側メニューで、[インスタンス] をクリックします。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
左側メニューで、[リポジトリ] > [リポジトリ] を選択します。
[リポジトリ] ページで、[リポジトリの作成] をクリックします。
[リポジトリ情報] ステップで、[名前空間]、[リポジトリ名]、[リポジトリタイプ]、[タグ]、[高速化イメージ]、[概要]、[説明] を設定し、[次へ] をクリックします。
[コードソース] ステップで、[コードソース]、[ビルド設定]、[ビルドルール] を設定し、[リポジトリの作成] をクリックします。
ビルド設定のパラメーターは次のとおりです:
パラメーター
説明
コード変更時のイメージ自動ビルド
有効にすると、コードがブランチにコミットされたときにビルドルールが自動的にトリガーされます。
中国本土外にデプロイされたサーバーでのビルド
コードソースが GitHub または Bitbucket にある場合、または Dockerfile が中国以外から依存関係をダウンロードし、クロスボーダーネットワーク接続が不安定な場合は、このオプションを有効にしてください。ACR はビルド中に高速化リンクを使用して外部データソースをプルします。このオプションは特定のリージョンでのみ利用可能です。イメージリポジトリの作成時にオプションが表示されない場合、現在のリージョンはこの機能に対応していません。
キャッシュなしのビルド
有効にすると、ACR はキャッシュされたレイヤーを無視して、毎回ソースからベースイメージをプルします。これにより、ビルドが遅くなる場合があります。このオプションを無効にすると、キャッシュされたレイヤーが使用され、ビルドが高速化されます。
[リポジトリ] ページで、作成したイメージリポジトリをクリックします。リポジトリ管理ページの左側メニューに [ビルド] が表示されている場合、イメージリポジトリはソースコードリポジトリにバインドされています。
ステップ 4: イメージのビルド
ビルドルールを設定して、ACR がリポジトリからイメージをビルドする方法とタイミングを定義し、ビルドをトリガーして結果を検証します。
リポジトリ管理ページに [ビルド] が見つからない場合、インスタンスはコードホスティングプラットフォームにバインドされていません。ステップ 1 に戻ってインスタンスを再バインドしてください。
Container Registry コンソールにログインします。
上部メニューで、リージョンを選択します。
左側メニューで、[インスタンス] をクリックします。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
-
インスタンス詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[リポジトリ] ページで、作成したイメージリポジトリを見つけ、[操作] 列の [管理] をクリックします。
左側メニューで、[ビルド] をクリックします。[ビルドルール] セクションで、[ビルドルールの追加] をクリックします。[ビルド情報] ステップで、次のパラメーターを設定し、[次へ] をクリックします。
パラメーター
説明
タイプ
ソースコードリポジトリのタイプ。有効な値:[Branch] と [Tag]。
ブランチ/タグ
ブランチまたはタグを選択または入力します。正規表現に対応しています。たとえば、
release-(?<imageTag>\w*)と入力すると、release-v1 ブランチのソースコードが更新されたときに、ACR は自動的にイメージをビルドします。名前付きキャプチャグループの詳細については、「名前付きキャプチャグループでの正規表現の使用」をご参照ください。説明正規表現を使用する場合、ACR のみがビルドをトリガーできます。手動ビルドはサポートされていません。
ビルドコンテキストディレクトリ
Dockerfile を含むディレクトリ。ブランチまたはタグのルートからの相対パスで指定します。たとえば、ブランチが master で、Dockerfile がブランチのルートにある場合、これを / に設定します。
Dockerfile 名
Dockerfile の名前。デフォルト名は Dockerfile です。
[タグ] ステップで、次のパラメーターを設定し、[保存] をクリックしてから、[次へ] をクリックします。
説明[設定の追加] をクリックして、イメージタグを追加します。最大 3 つのイメージタグを追加できます。
パラメーター
説明
イメージタグ
ビルドするイメージのタグ (例:latest)。名前付きキャプチャグループに対応しています。[ブランチ/タグ] で名前付きキャプチャグループを定義した場合は、ここでキャプチャされた値を参照します。
ビルド時間
(オプション) ソースコードがプッシュされた時刻 (UTC+8)。指定可能な形式:20201015 または 202010151613。
説明このパラメーターを設定した場合、ACR のみがビルドをトリガーできます。手動ビルドはサポートされていません。
コミット ID
(オプション) 最後にプッシュされたコードのコミット ID の先頭から使用する文字数。デフォルトでは、最初の 6 文字が使用されます。スライダーを調整して数を変更します。
説明このパラメーターを設定した場合、ACR のみがビルドをトリガーできます。手動ビルドはサポートされていません。
[ビルド設定] ステップで、次のパラメーターを設定し、[次へ] をクリックします。
パラメーター
説明
ビルドアーキテクチャ
1 つ以上のターゲットアーキテクチャを選択します。複数のアーキテクチャを選択した場合、ACR は同じタグの下でアーキテクチャごとに個別のイメージを生成します。
ビルドパラメーター
ビルドプロセスに渡されるキーと値のペア。パラメーター名では大文字と小文字が区別されます。[設定の追加] をクリックして、最大 20 個のビルドパラメーターを設定します。
ビルドをトリガーします:次のいずれかの方法を使用します。
[ビルド] ページの [ビルドルール] セクションで、ビルドルールを見つけ、[操作] 列の [ビルド] をクリックします。
ソースコードリポジトリの設定済みブランチにコードコミットをプッシュして、ビルドルールを自動的にトリガーします。
ビルドを監視します:[ビルドログ] セクションで、イメージビルドタスクを見つけ、[操作] 列の [ログ] をクリックしてビルドログを表示します。実行中のビルドを停止するには、[操作] 列の [キャンセル] をクリックします。
結果を検証します:左側メニューで、[イメージタグ] をクリックします。ビルドしたイメージが一覧に表示されていれば、ビルドは成功です。
左側メニューで、[イメージタグ] をクリックします。作成したイメージが表示されている場合、イメージがビルドされたことを示します。
例
次の 2 つの例は、一般的なビルドルールの設定を示しています。例 1 は、手動ビルドと自動ビルドの両方に対応するシンプルな設定です。例 2 は、正規表現を使用してリリースブランチ名からバージョン管理されたイメージタグを作成し、自動ビルドのみに対応します。
例 1: main ブランチからのビルド (手動ビルド可)
目的:main ブランチから latest タグを付けたイメージをビルドし、手動またはコードプッシュ時に自動でトリガーできるようにします。
パラメーター | 値 |
タイプ | Branch |
ブランチ/タグ | main |
ビルドコンテキストディレクトリ | / |
Dockerfile 名 | Dockerfile |
イメージタグ | latest |
結果:[ビルド] をクリックするか、main ブランチのソースコードが更新されると、ACR は main ブランチのルートディレクトリにある Dockerfile を使用してイメージをビルドします。ビルドされたイメージには latest というタグが付けられます。
[ビルド時間] と [コミット ID] が設定されていないため、手動でビルドをトリガーできます。
例 2: 正規表現に一致するブランチからのビルド (手動ビルド不可)
目的:リリースブランチからバージョン管理されたイメージを自動的にビルドします。この場合、ブランチ名によってイメージタグが決まります。
パラメーター | 値 |
タイプ | Branch |
ブランチ/タグ | release-(?<imageTag>\w*) |
ビルドコンテキストディレクトリ | / |
Dockerfile 名 | Dockerfile |
イメージタグ | ${imageTag} |
ビルド時間 | yyyyMMddHHmm |
コミット ID | 30 |
結果:名前が release- で始まるブランチのソースコードが更新されると、ACR は自動的にイメージをビルドします。正規表現 release-(?<imageTag>\w*) は、ブランチ名のバージョン部分をキャプチャして imageTag 変数に割り当て、その変数がイメージタグで使用されます。
たとえば、release-v1 ブランチへのプッシュは、v1 を imageTag としてキャプチャします。ビルド時間とコミット ID と組み合わせると、生成されるイメージタグは v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45 のようになります。
[ビルド時間] と [コミット ID] が設定されているため、このビルドは ACR のみがトリガーできます。手動ビルドには対応していません。
次のステップ
イメージがビルドされたら、次のいずれかの方法で Container Service for Kubernetes (ACK) クラスターで使用します:
Secret なしでのイメージのプル:aliyun-acr-credential-helper アドオンを使用して自動的に認証します。詳細については、「aliyun-acr-credential-helper コンポーネントを使用した Secret なしでのイメージのプル」をご参照ください。
アプリケーションとしてのイメージのデプロイ:Deployment を作成して、ACK クラスターでイメージを実行します。詳細については、「Deployment を使用したステートレスアプリケーションの作成」をご参照ください。
イメージプルの高速化:P2P 高速化機能を使用して、ノード間のイメージ配信を高速化します。詳細については、「ACK Serverless および ACK クラスターでの P2P 高速化機能の使用」をご参照ください。