App Engine へのデプロイ

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

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

始める前に

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

    App Engine API を有効にする

  • アプリケーションのソースコードを用意します。 ソースコードは、GitHub や Bitbucket などのリポジトリに保存する必要があります。

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

必要な Identity and Access Management 権限

  1. Google Cloud コンソールで、 Cloud Build の [権限] ページに移動します。

    [権限] に移動

  2. 指定した 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)| サービス アカウントでビルドを実行できます。

デプロイを構成する

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 コンソールで [トリガー] ページを開きます。

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

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

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

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

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

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

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

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

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

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

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

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

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

次のステップ