このページでは、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=RUNTIME
JSON
{ "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=RUNTIME
JSON
{ "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 にデプロイする方法を学習する
- ビルドエラーをトラブルシューティングする方法について学習する。