このページでは、Cloud Build を使用して App Engine にアプリケーションをデプロイする方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートとビルド構成の概要をご覧ください。
App Engine は、大規模なウェブ アプリケーションを開発およびホスティングするための、フルマネージド型のサーバーレス プラットフォームです。App Engine の詳細については、App Engine のドキュメントをご覧ください。
始める前に
App Engine API を有効にします。
このページで
gcloud
コマンドを実行するには、Google Cloud CLI をインストールします。ビルドして App Engine と同じ場所にデプロイするアプリケーションのソースコードを用意します。 ソースコードは、Cloud Source Repositories、GitHub、Bitbucket などのリポジトリに保存する必要があります。
必要な IAM 権限
Google Cloud コンソールで、プロジェクトを選択します。
App Engine のデフォルト サービス アカウントに Cloud Build サービス アカウントのロールを付与するサービス アカウントがリストに表示されない場合は、[サービス アカウント] ページでサービス アカウントを探します。
App Engine 管理者ロールとサービス アカウント ユーザーを、ビルド サービス アカウントに付与します。
Cloud Build 設定ページを開きます。
App Engine 管理者ロールのステータスとサービス アカウント ユーザーロールを有効に設定します。
デプロイを構成する
Cloud Build を使用すると、一般公開されているコンテナ イメージを使用してタスクを実行できます。これを行うには、Cloud Build 構成ファイルのビルド step
にイメージを指定します。
App Engine の gcloud app deploy
コマンドを使用すると、ソースコードを使用してイメージをビルドし、そのイメージを App Engine にデプロイできます。たとえば、構成ファイルのビルドステップで cloud-sdk
イメージを使用すると、イメージから gcloud
コマンドを使用できます。このビルドステップに渡された引数が gcloud CLI に直接渡されるため、このイメージでは任意の gcloud
コマンドを実行できます。
アプリケーションを App Engine にデプロイするには:
Cloud Build 構成ファイルを
cloudbuild.yaml
またはcloudbuild.json
という名前で作成します。config ファイルで次の操作を行います。
name
フィールドを追加してcloud-sdk
ビルドステップを指定します。cloud-sdk
が呼び出されたときにbash
ツールを使用するには、entrypoint
フィールドを追加します。args
フィールドで、gcloud app deploy
コマンドを呼び出し、App Engine が Cloud Build を呼び出すときに使用するtimeout
を設定します。Cloud Build ビルドステップとビルドのデフォルトのタイムアウトは 10 分で、App Engine のデプロイは完了までにさらに時間がかかる場合があるため、これは必要です。より長いタイムアウトを指定すると、gcloud app deploy
の完了までに 10 分以上かかってもビルドがタイムアウトしなくなります。App Engine スタンダード環境使用時のタイムアウト エラー: App Engine フレキシブル環境を使用している場合にのみ、ここで説明する手順でタイムアウトを構成できます。App Engine スタンダード環境では、ビルドのタイムアウトを構成できません。App Engine スタンダード環境へのデプロイに Cloud Build を使用していて、ビルドがタイムアウト エラーで失敗する場合は、App Engine スタンダード環境の代わりに App Engine フレキシブル環境または Cloud Run の使用を検討してください。
10 分を超えるビルド
timeout
値を追加します。
YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy'] timeout: '1600s'
JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "bash", "args": [ "-c", "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy" ] } ], "timeout": "1600s" }
ビルドを開始します。ここで、
SOURCE_DIRECTORY
はソースコードへのパスまたは URL で、REGION
はビルドを開始するためにサポートされているビルド リージョンのいずれかです。gcloud builds submit --region=REGION SOURCE_DIRECTORY
継続的デプロイ
Cloud Build トリガーを作成すると、App Engine にソフトウェアを自動的にデプロイできます。トリガーを構成すると、ソースコードを更新するたびにイメージをビルドしてデプロイできます。
App Engine へのデプロイを自動化するには:
リポジトリで、
gcloud app deploy
コマンドを呼び出すステップを構成ファイルに追加します。YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy'] timeout: '1600s'
JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "bash", "args": [ "-c", "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy" ] } ], "timeout": "1600s" }
前のステップで作成した構成ファイルを使用して、ビルドトリガーを作成します。
Google Cloud Console で [トリガー] ページを開きます。
ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。
[開く] をクリックします。
[トリガーを作成] をクリックします。
[トリガーの作成] ページで、次の設定を入力します。
トリガーの名前を入力します。
トリガーを開始するリポジトリ イベントを選択します。
ソースコードとビルド構成ファイルを格納するリポジトリを選択します。
トリガーを開始するブランチまたはタグ名を正規表現で指定します。
構成: 以前に作成したビルド構成ファイルを選択します。
[作成] をクリックして、ビルドトリガーを保存します。
リポジトリに新しいコードを push すると、ビルドが自動的に開始し、App Engine にデプロイされます。
Cloud Build トリガーの作成方法については、ビルドトリガーの作成と管理をご覧ください。
次のステップ
- Cloud Run にデプロイする方法を学習する
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。
- GKE にデプロイする方法を学習する
- Cloud Run functions にデプロイする方法を学習する
- Firebase にデプロイする方法を学習する
- ビルドエラーをトラブルシューティングする方法について学習する。