このサンプルテンプレートは、GitHub からコードをプルして Docker イメージを作成し、コンテナーレジストリにアップロードするために使用されます。これは、イメージが作成され、イメージリポジトリにアップロードされるシナリオに適用できます。このテンプレートを使用して、既存の Elastic Compute Service (ECS) インスタンスのイメージを作成できます。また、このテンプレートを使用して、イメージの作成後にリリースされる一時的な ECS インスタンスのイメージを作成することもできます。さらに、このテンプレートを使用すると、ビジネス要件に基づいて、Container Registry Enterprise Edition または Container Registry Personal Edition にイメージをアップロードできます。Container Registry Enterprise Edition の使用には料金が発生します。Container Registry Personal Edition は無料で使用できます。
前提条件
ECS インスタンスが作成されている。ECS インスタンスはインターネット経由でアクセスできる。詳細については、「インスタンスの作成」および「パブリック帯域幅を有効にする」をご参照ください。
Container Registry Enterprise Edition または Container Registry Personal Edition がアクティブ化されている。詳細については、「コンテナーレジストリとは」、「Personal Edition インスタンス、Cost-effective Edition インスタンス、および Enterprise Edition インスタンスの違い」、および「Container Registry Personal Edition インスタンスの作成」をご参照ください。
手順
次の図は、テンプレートに含まれる 2 つのステップを示しています。
ステップ 1: Object Storage Service (OSS) や GitHub など、コードソースを指定します。CloudOps Orchestration Service (OOS) は、コードソースからコードをプルするためのコードソースの一時 URL を生成します。
ステップ 2: OOS は自動的にコードをプルして Docker をインストールし、イメージを作成するためのスクリプトを実行します。イメージが作成されると、OOS はイメージをコンテナーレジストリの指定されたイメージリポジトリにアップロードします。

例
この例では、Spring Boot プロジェクトのサンプルコードを使用します。コードは Gitee と GitHub にアップロードされます。コードを使用する場合は、コードを自分のリポジトリにフォークする必要があります。コードアドレス:
Gitee: Alicloud-ComputeNest/oos-cicd-example-java (中国本土のユーザー向け)
GitHub: aliyun-computenest/oos-cicd-example-java
この例では、Alibaba Cloud Linux 3.2104 を実行する ECS インスタンスが使用されます。アプリケーションのビルドとデプロイのコマンドは、環境によって異なります。ビジネス要件に基づいてコマンドを変更する必要があります。
テンプレートを作成する
CloudOps Orchestration Service にログインします。左側のナビゲーションウィンドウで、 を選択します。[カスタムテンプレート] ページで、[テンプレートの作成] をクリックします。
[テンプレートの作成] ページで、[ビルドとデプロイ] パラメーターで [acs-ecs-exampledockerbuildfromgit] を選択し、[次のステップ] をクリックします。

[プロセス設定] タブで、右上隅にある [すべて非表示] をクリックします。テンプレートに含まれるステップを表示できます。


[すべて表示] をクリックして、テンプレートを設定します。
コードソースを指定します。OOS はコードソースの一時 URL を生成します。この URL は、次のステップでコードソースからコードをプルするために使用されます。
この例では、Gitee がコードソースとして使用されています。[所有者]、[組織]、[リポジトリ] パラメーターを指定する前に、コードをプルするリポジトリで必要な権限を取得する必要があります。

次に、コードをプルするリポジトリを選択します。サンプルコードをフォークした場合、アカウント下のすべてのリポジトリが [リポジトリ] ドロップダウンリストに自動的に表示されます。この場合、コードをフォークしたリポジトリを選択します。テンプレートを実行すると、OOS はリポジトリの一時 URL を自動的に生成し、タスク出力で authorizedUrl として使用します。この URL は後続のステップで使用されます。

Docker イメージを作成し、コンテナーレジストリにアップロードします。
コードソースを指定します。この例では、git が選択されています。OOS は、前のタスクの出力の authorizedUrl をコードソースの URL として参照します。
説明OOS は、次の図に示すように、フォルダにコードを自動的にプルします。このフォルダは、後続のコマンドを実行する作業パスとして使用されます。

イメージを作成する ECS インスタンスを選択します。既存の ECS インスタンスまたは一時的な ECS インスタンスのイメージを作成できます。一時的な ECS インスタンスは、イメージの作成後に自動的にリリースされます。一時的な ECS インスタンスは、従量課金制で課金されます。OOS は、Docker が ECS インスタンスにインストールされているかどうかを自動的にチェックします。Docker がインストールされていない場合、OOS は ECS インスタンスに Docker Community Edition を自動的にインストールします。

イメージの作成に必要なコマンドを記述します。これらのコマンドは、
docker buildコマンドの後に実行されます。このようにして、イメージを作成する前に準備を行うことができます。これらのコマンドは、作業パスとして使用されるフォルダで実行されます。この例では、Dockerfile でイメージが作成されます。準備は必要ありません。
Docker イメージを作成し、コンテナーレジストリにアップロードします。この場合、OOS は
docker buildコマンドを自動的に実行してイメージを作成します。docker buildコマンドを実行する Dockerfile のパスとコンテキストパスを指定する必要があります。詳細については、対応するパラメーターの詳細な説明をご参照ください。
この例では、次の図に示すように、Dockerfile はプルされたコードのルートディレクトリに保存されています。したがって、Dockerfile の名前を直接指定できます。コンテキストパスもルートディレクトリであるため、指定する必要はありません。デフォルトでは、コンテキストパスと Dockerfile は同じディレクトリにあります。
さらに、コンテナーレジストリに関する情報を指定する必要があります。Container Registry Enterprise Edition と Container Registry Personal Edition がサポートされています。ビジネス要件に基づいてエディションを選択できます。Container Registry Enterprise Edition ユーザーの場合は、イメージをアップロードするコンテナーレジストリのインスタンス ID、名前空間、およびリポジトリを選択する必要があります。

Container Registry Personal Edition ユーザーの場合は、ユーザー名とパスワードを指定し、イメージをアップロードするリポジトリを選択する必要があります。Container Registry Personal Edition のリポジトリの使用方法の詳細については、「Container Registry Personal Edition インスタンスの作成」をご参照ください。

イメージのバージョンを指定します。デフォルト値は、現在の日付と実行 ID で構成されています。プロジェクトのイメージバージョンを指定できます。イメージが VPC 経由でアップロードされるかどうかを確認します。詳細については、「VPC ACL を設定する」をご参照ください。
[テンプレートの作成] をクリックします。
テンプレートを実行する
[カスタムテンプレート] ページで、作成したテンプレートを見つけ、[アクション] 列の [実行の作成] をクリックします。デフォルト設定を維持し、[次のステップ: OK] をクリックします。テンプレートが実行されます。


実行が成功したら、コンテナーレジストリコンソール に移動します。最新のイメージが指定されたリポジトリにプッシュされているかどうかを確認します。イメージがリポジトリにプッシュされると、イメージは後続のデプロイメントまたはその他の操作に使用できます。

次のステップ
コードが更新された場合は、コードを対応する GitHub リポジトリにプッシュし、テンプレートを再度実行するだけで済みます。その後、OOS はコードソースから最新のコードをプルし、イメージを再生成して、コンテナーレジストリにプッシュします。テンプレートを変更する場合は、テンプレートを変更してから実行できます。