App Engine へのデプロイ

このページでは、Cloud Build を使用して App Engine にアプリケーションをデプロイする方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートビルド構成の概要をご覧ください。

App Engine は、大規模なウェブ アプリケーションを開発およびホスティングするための、フルマネージド型のサーバーレス プラットフォームです。App Engine の詳細については、App Engine のドキュメントをご覧ください。

始める前に

  • App Engine API を有効にします。

    App Engine API を有効にする

  • このページで gcloud コマンドを実行するには、Google Cloud CLI をインストールします。

  • ビルドして App Engine と同じ場所にデプロイするアプリケーションのソースコードを用意します。 ソースコードは、Cloud Source Repositories、GitHub、Bitbucket などのリポジトリに保存する必要があります。

必要な IAM 権限

  1. Google Cloud コンソールで、プロジェクトを選択します。

  2. App Engine のデフォルト サービス アカウントに Cloud Build サービス アカウントのロールを付与するサービス アカウントがリストに表示されない場合は、[サービス アカウント] ページでサービス アカウントを探します。

    [サービス アカウント] に移動

  3. App Engine 管理者ロールとサービス アカウント ユーザーを、ビルド サービス アカウントに付与します。

    1. Cloud Build 設定ページを開きます。

      Cloud Build 設定ページを開きます

    2. App Engine 管理者ロールのステータスとサービス アカウント ユーザーロールを有効に設定します。

デプロイを構成する

Cloud Build を使用すると、一般公開されているコンテナ イメージを使用してタスクを実行できます。これを行うには、Cloud Build 構成ファイルのビルド step にイメージを指定します。

App Engine の gcloud app deploy コマンドを使用すると、ソースコードを使用してイメージをビルドし、そのイメージを App Engine にデプロイできます。たとえば、構成ファイルのビルドステップで cloud-sdk イメージを使用すると、イメージから gcloud コマンドを使用できます。このビルドステップに渡された引数が gcloud CLI に直接渡されるため、このイメージでは任意の gcloud コマンドを実行できます。

アプリケーションを App Engine にデプロイするには:

  1. Cloud Build 構成ファイルcloudbuild.yaml または cloudbuild.json という名前で作成します。

  2. 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"
    }
    
  3. ビルドを開始します。ここで、SOURCE_DIRECTORY はソースコードへのパスまたは URL で、REGION はビルドを開始するためにサポートされているビルド リージョンのいずれかです。

     gcloud builds submit --region=REGION SOURCE_DIRECTORY
    

継続的デプロイ

Cloud Build トリガーを作成すると、App Engine にソフトウェアを自動的にデプロイできます。トリガーを構成すると、ソースコードを更新するたびにイメージをビルドしてデプロイできます。

App Engine へのデプロイを自動化するには:

  1. リポジトリで、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"
    }
    
  2. 前のステップで作成した構成ファイルを使用して、ビルドトリガーを作成します。

    1. Google Cloud Console で [トリガー] ページを開きます。

      [トリガー] ページを開く

    2. ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。

    3. [開く] をクリックします。

    4. [トリガーを作成] をクリックします。

      [トリガーの作成] ページで、次の設定を入力します。

      1. トリガーの名前を入力します。

      2. トリガーを開始するリポジトリ イベントを選択します。

      3. ソースコードとビルド構成ファイルを格納するリポジトリを選択します。

      4. トリガーを開始するブランチまたはタグ名を正規表現で指定します。

      5. 構成: 以前に作成したビルド構成ファイルを選択します。

    5. [作成] をクリックして、ビルドトリガーを保存します。

リポジトリに新しいコードを push すると、ビルドが自動的に開始し、App Engine にデプロイされます。

Cloud Build トリガーの作成方法については、ビルドトリガーの作成と管理をご覧ください。

次のステップ