このページでは、Cloud Build を使用して Cloud Run functions にアプリケーションをデプロイする方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートとビルド構成の概要をご覧ください。
Cloud Run functions は、クラウド サービスの構築と接続に使用できるサーバーレスの実行環境です。Cloud Run functions を使用すると、クラウド インフラストラクチャやサービスで生じたイベントに関連付けられた、単一目的の関数を作成できます。対象のイベントが発生すると、関数がトリガーされます。Cloud Run functions の詳細については、Cloud Run functions のドキュメントをご覧ください。
始める前に
Cloud Run functions API を有効にします。
アプリケーションのソースコードを用意します。 ソースコードは、GitHub や Bitbucket などのリポジトリに保存する必要があります。
このページで
gcloudコマンドを実行するには、Google Cloud CLI をインストールします。
必要な Identity and Access Management 権限
-
Google Cloud コンソールで、settings Cloud Build の [権限] ページに移動します。
指定した Cloud Build サービス アカウントまたはデフォルトの Cloud Build サービス アカウントで、次のロールのステータスを [有効] に設定します。
- Cloud Functions デベロッパー(
roles/cloudfunctions.developer)| 関数をデプロイして管理します。- [サービス アカウント ユーザーのロールを割り当てる] パネルで、権限を借用するサービス アカウントを選択し、[権限を付与] をクリックします。
- Cloud Run 管理者(
roles/run.admin)| Cloud Build サービス アカウントが Cloud Run に新しいバージョンをデプロイできるようにします。 - ストレージ管理者(
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 Functions デベロッパー(
デプロイを構成する
Cloud Build では、一般公開されているコンテナ イメージを使用してタスクを実行できます。これを行うには、Cloud Build 構成ファイルのビルド step にイメージを指定します。
Cloud Run functions の gcloud functions deploy コマンドを使用して、関数コードを含むディレクトリから関数をデプロイします。たとえば、構成ファイルのビルドステップで cloud-sdk イメージを使用すると、イメージから gcloud コマンドを使用できます。このビルドステップに渡された引数が Google Cloud CLI に直接渡されるので、このイメージで任意の gcloud コマンドを実行できます。
Cloud Run functions にアプリケーションをデプロイするには、次の操作を行います。
- プロジェクトのルート ディレクトリに、
cloudbuild.yamlまたはcloudbuild.jsonという名前の Cloud Build 構成ファイルを作成します。 config ファイルで次の操作を行います。
nameフィールドを追加してgcloudビルドステップを指定します。gcloud functions deployコマンドを呼び出すため、functions deployをargsフィールドに追加します。 使用可能な構成オプションについては、gcloud functions deployリファレンスをご覧ください。--source=.は、ソースコードが現在の作業ディレクトリにあることを示します。
YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: - gcloud - functions - deploy - FUNCTION_NAME - --region=FUNCTION_REGION - --source=. - --trigger-http - --runtime=RUNTIMEJSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "args": [ "gcloud", "functions", "deploy", [ "FUNCTION_NAME" ], "--region=FUNCTION_REGION", "--source=.", "--trigger-http", "--runtime=RUNTIME" ] } ] }上の構成ファイルのプレースホルダ値を次の値に置き換えます。
FUNCTION_NAMEは、デプロイする Cloud Run functions の名前です。既存の関数を更新する場合、この値は更新する関数の名前と一致する必要があります。FUNCTION_REGIONは、Cloud Run functions をデプロイするリージョンです。サポートされているリージョンの一覧については、Cloud Run functions のロケーションをご覧ください。--trigger-httpは、この関数のトリガーの種類です。この場合は、HTTP リクエスト(Webhook)です。RUNTIMEは、関数を実行するランタイムです。
gcloud functions deployの使用について詳しくは、Cloud Run functions のドキュメントをご覧ください。前の手順で作成した構成ファイルを使用してビルドを開始します。
gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY上の構成ファイルのプレースホルダ値を次の値に置き換えます。
CONFIG_FILE_PATHは、ビルド構成ファイルへのパスです。SOURCE_DIRECTORYは、ソースコードへのパスまたは URL です。REGIONは、サポートされているビルド リージョンの一つです。
gcloud builds submitコマンドにCONFIG_FILE_PATHとSOURCE_DIRECTORYを指定しないと、Cloud Build は、構成ファイルとソースコードが現在の作業ディレクトリにあることを前提とします。
継続的デプロイ
Cloud Build トリガーを作成すると、ソフトウェアの Cloud Run functions へのデプロイを自動化できます。トリガーを構成すると、ソースコードを更新するたびにイメージをビルドしてデプロイできます。
Cloud Run functions へのデプロイを自動化するには:
リポジトリのルートで、
gcloud functions deployコマンドを呼び出すステップを構成ファイルに追加します。YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: - gcloud - functions - deploy - FUNCTION_NAME - --region=FUNCTION_REGION - --source=. - --trigger-http - --runtime=RUNTIMEJSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "args": [ "gcloud", "functions", "deploy", [ "FUNCTION_NAME" ], "--region=FUNCTION_REGION", "--source=.", "--trigger-http", "--runtime=RUNTIME" ] } ] }上の構成ファイルのプレースホルダ値を次の値に置き換えます。
FUNCTION_NAMEは、デプロイする Cloud Run functions の名前です。既存の関数を更新する場合、この値は更新する関数の名前と一致する必要があります。FUNCTION_REGIONは、Cloud Run functions をデプロイするリージョンです。サポートされているリージョンの一覧については、Cloud Run functions のロケーションをご覧ください。--trigger-httpは、この関数のトリガーの種類です。この場合は、HTTP リクエスト(Webhook)です。RUNTIMEは、関数を実行するランタイムです。
前のステップで作成した構成ファイルを使用して、ビルドトリガーを作成します。
Google Cloud コンソールで [トリガー] ページを開きます。
ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。
[トリガーを作成] をクリックします。
[名前] 欄にトリガーの名前を入力します。
[リージョン] で、トリガーのリージョンを選択します。
[イベント] で、リポジトリ イベントを選択してトリガーを開始します。
[ソース] で、トリガーを開始するリポジトリとブランチまたはタグ名を選択します。自動ビルドのブランチを指定する方法については、ビルドトリガーの作成をご覧ください。
[構成] で [Cloud Build 構成ファイル(YAML または JSON)] を選択します。
[Cloud Build 構成ファイルの場所] フィールドで、
/の後に「cloudbuild.yaml」と入力します。[作成] をクリックして、ビルドトリガーを保存します。
リポジトリに新しいコードを push するたびに、ビルドが自動的にトリガーされ、Cloud Run functions にデプロイされます。
Cloud Build トリガーの作成方法については、ビルドトリガーの作成と管理をご覧ください。
次のステップ
- Compute Engine で Blue/Green デプロイを実行する方法を学習する
- Cloud Run にデプロイする方法を学習する
- GKE にデプロイする方法を学習する
- Firebase にデプロイする方法を学習する
- App Engine にデプロイする方法を学習する
- ビルドエラーをトラブルシューティングする方法について学習する。