Dockerfile
がある git リポジトリが存在することを前提としています。
Cloud Build で Git からのデプロイを自動化するには:
次の処理を行う 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 によって事前入力されます。Cloud Build サービス アカウントに Cloud Run 管理者とサービス アカウント ユーザーロールを付与します。
Google Cloud コンソールで Cloud Build の設定ページを開きます。
[サービス アカウント権限] パネルで、Cloud Run 管理者ロールのステータスを [有効] に設定します。
[すべてのサービス アカウントにアクセス権を付与] を選択して、ページのプロジェクトのすべてのサービス アカウントに、サービス アカウント ユーザーのロールを付与します。
左側のナビゲーション パネルで [トリガー] をクリックして、[トリガー] ページを開きます。
- [トリガーを作成] をクリックします。
- [名前] 欄にトリガーの名前を入力します。
- [イベント] で、リポジトリ イベントを選択してトリガーを開始します。
- [ソース] で、トリガーを開始するリポジトリとブランチまたはタグ名を選択します。自動ビルドのブランチを指定する方法については、ビルドトリガーの作成をご覧ください。
- [Cloud Build 構成ファイル(yaml または json)] で、[Cloud Build 構成ファイル] を選択します。
- [Cloud Build 構成ファイルの場所] フィールドで、
/
の後に「cloudbuild.yaml
」と入力します。 - [作成] をクリックして、ビルドトリガーを保存します。
これで完了です。これで、リポジトリに push するたびに、Cloud Run サービスのビルドとデプロイが自動的に開始されます。
最小限の IAM 権限での継続的デプロイを行う
コンテナが Cloud Run サービスにデプロイされると、この Cloud Run サービスのランタイム サービス アカウントの ID でコンテナが実行されます。Cloud Build は新しいコンテナを自動的にデプロイできます。このため、Cloud Run サービスのランタイム サービス アカウントとして機能できるように Cloud Build を構成する必要があります。
Cloud Build に Cloud Run サービスにデプロイする制限付きアクセス権を付与するには:
コンソール UI
Google Cloud コンソールの [サービス アカウント] ページに移動します。
Cloud Run の、Cloud Run サービスのランタイム サービス アカウントのメールアドレスをクリックします(デフォルトは
PROJECT_NUMBER-compute@developer.gserviceaccount.com
)。[権限] タブをクリックします。
[
アクセスを許可] をクリックします。Cloud Build サービス アカウントを入力します(
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
)[ロールを選択] プルダウンで、[サービス アカウント] > [サービス アカウント ユーザー] ロールを選択します。
[保存] をクリックします。
gcloud
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
をサービス アカウントのアドレスに置き換えます。
詳しくは、デプロイ権限をご覧ください。
次のステップ
- サービス アカウントの権限の設定に含まれる、別のプロジェクトのコンテナ イメージをプライベート レジストリにデプロイまたは公開する方法をご覧ください。