Cloud Build を使用した継続的デプロイの手動設定

以下の手順では、ルートに Dockerfile がある git リポジトリが存在することを前提としています。

Cloud Build で Git からのデプロイを自動化するには:

  1. 次の処理を行う Cloud Build 構成を作成します。

    • コンテナ イメージをビルドする
    • イメージを Container Registry に push する
    • Cloud Run サービスに、新しいリビジョンをデプロイする

    これを行うには、cloudbuild.yaml という名前のファイルをリポジトリのルートに追加します。

     steps:
     # build the container image
     - name: 'gcr.io/cloud-builders/docker'
       args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.']
     # push the container image to Container Registry
     - name: 'gcr.io/cloud-builders/docker'
       args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA']
     # Deploy container image to Cloud Run
     - name: 'gcr.io/cloud-builders/gcloud'
       args:
       - 'run'
       - 'deploy'
       - '[SERVICE-NAME]'
       - '--image'
       - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
       - '--region'
       - '[REGION]'
     images:
     - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
    

    次のように置き換えます。

    • [SERVICE-NAME] は Cloud Run サービスの名前に置き換えます。
    • [REGION] は、デプロイする Cloud Run サービスのリージョンに置き換えます。

    $COMMIT_SHA 置換変数は、Git リポジトリからトリガーされたときに Cloud Build によって事前入力されます。

  2. Cloud Build サービス アカウントに Cloud Run 管理者とサービス アカウント ユーザーロールを付与します。

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

      Cloud Build 設定ページに移動

    2. [サービス アカウント権限] パネルで、Cloud Run 管理者ロールのステータスを [有効] に設定します。

      サービス アカウント権限ページのスクリーンショット

    3. [すべてのサービス アカウントにアクセス権を付与] を選択して、ページのプロジェクトのすべてのサービス アカウントに、サービス アカウント ユーザーのロールを付与します。

  3. 左側のナビゲーション パネルで [トリガー] をクリックして、[トリガー] ページを開きます。

    トリガーページに移動

    1. [トリガーを作成] をクリックします。
    2. [名前] 欄にトリガーの名前を入力します。
    3. [イベント] で、リポジトリ イベントを選択してトリガーを開始します。
    4. [ソース] で、トリガーを開始するリポジトリとブランチまたはタグ名を選択します。自動ビルドのブランチを指定する方法については、ビルドトリガーの作成をご覧ください。
    5. [Cloud Build 構成ファイル(yaml または json)] で、[Cloud Build 構成ファイル] を選択します。
    6. [Cloud Build 構成ファイルの場所] フィールドで、/ の後に「cloudbuild.yaml」と入力します。
    7. [作成] をクリックして、ビルドトリガーを保存します。
  4. これで完了です。これで、リポジトリに push するたびに、Cloud Run サービスのビルドとデプロイが自動的に開始されます。

最小限の IAM 権限での継続的デプロイを行う

コンテナが Cloud Run サービスにデプロイされると、この Cloud Run サービスのランタイム サービス アカウントの ID でコンテナが実行されます。Cloud Build は新しいコンテナを自動的にデプロイできます。このため、Cloud Run サービスのランタイム サービス アカウントとして機能できるように Cloud Build を構成する必要があります。

Cloud Build に Cloud Run サービスにデプロイする制限付きアクセス権を付与するには:

コンソール UI

  1. Google Cloud Console の [サービス アカウント] ページに移動します。

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

  2. Cloud Run サービスのランタイム サービス アカウントを選択します(デフォルトでは PROJECT_NUMBER-compute@developer.gserviceaccount.com です)。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. [メンバーを追加] ボタンをクリックします。

  5. Cloud Build サービス アカウントを入力します(PROJECT_NUMBER@cloudbuild.gserviceaccount.com

  6. [ロールを選択] プルダウンで、[サービス アカウント] > [サービス アカウント ユーザー] ロールを選択します。

  7. [保存] をクリックします。

コマンドライン

gcloud iam service-accounts add-iam-policy-binding コマンドを使用します。

gcloud iam service-accounts add-iam-policy-binding \
  PROJECT_NUMBER-compute@developer.gserviceaccount.com \
  --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

PROJECT_NUMBER は、プロジェクトの数値 ID に置き換えます。

カスタマイズされたサービス ID を使用して Cloud Run を使用する場合は、PROJECT_NUMBER-compute@developer.gserviceaccount.com をサービス アカウントのアドレスに置き換えます。

詳しくは、デプロイ権限をご覧ください。

次のステップ