このページでは、Cloud Build を使用して App Engine にアプリケーションをデプロイする方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートとビルド構成の概要をご覧ください。
App Engine は、大規模なウェブ アプリケーションを開発およびホスティングするための、フルマネージド型のサーバーレス プラットフォームです。App Engine の詳細については、App Engine のドキュメントをご覧ください。
始める前に
App Engine API を有効にします。
アプリケーションのソースコードを用意します。 ソースコードは、GitHub や Bitbucket などのリポジトリに保存する必要があります。
このページで
gcloud
コマンドを実行するには、Google Cloud CLI をインストールします。
必要な Identity and Access Management 権限
-
Google Cloud コンソールで、settings Cloud Build の [権限] ページに移動します。
指定した Cloud Build サービス アカウントまたはデフォルトの Cloud Build サービス アカウントで、次のロールのステータスを [有効] に設定します。
- App Engine 管理者(
roles/appengine.appAdmin
)| Cloud Build が App Engine に新しいバージョンをデプロイできるようにします。- [サービス アカウント ユーザーのロールを割り当てる] パネルで、権限を借用するサービス アカウントを選択し、[権限を付与] をクリックします。
- ストレージ管理者(
roles/storage.admin
)| Cloud Storage からの読み取りと書き込みを有効にします。 - Artifact Registry 書き込み(
roles/artifactregistry.writer
)| Artifact Registry からのイメージの pull と Artifact Registry への書き込みを許可します。 - ログ書き込み(
roles/logging.logWriter
)| ログエントリを Cloud Logging に書き込むことができます。 - Cloud Build 編集者(
roles/cloudbuild.builds.editor
)| サービス アカウントでビルドを実行できます。
- 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 コンソールで [トリガー] ページを開きます。
ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。
[開く] をクリックします。
[トリガーを作成] をクリックします。
[トリガーの作成] ページで、次の設定を入力します。
トリガーの名前を入力します。
トリガーを開始するリポジトリ イベントを選択します。
ソースコードとビルド構成ファイルを格納するリポジトリを選択します。
トリガーを開始するブランチまたはタグ名を正規表現で指定します。
構成: 以前に作成したビルド構成ファイルを選択します。
[作成] をクリックして、ビルドトリガーを保存します。
リポジトリに新しいコードを push すると、ビルドが自動的に開始し、App Engine にデプロイされます。
Cloud Build トリガーの作成方法については、ビルドトリガーの作成と管理をご覧ください。
次のステップ
- Cloud Run にデプロイする方法を学習する
- Compute Engine で Blue/Green デプロイを実行する方法を学習する
- GKE にデプロイする方法を学習する
- Cloud Run functions にデプロイする方法を学習する
- Firebase にデプロイする方法を学習する
- ビルドエラーをトラブルシューティングする方法について学習する。