このページでは、Cloud Build を使用して Cloud Functions にアプリケーションをデプロイする方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートとビルド構成の概要をご覧ください。
Cloud Functions は、クラウド サービスの作成と接続に使用できるサーバーレスの実行環境です。Cloud Functions を使用すると、クラウド インフラストラクチャやサービスから生成されたイベントに関連する簡単な関数を作成できます。対象のイベントが発生すると、関数がトリガーされます。Cloud Functions の詳細については、Cloud Functions のドキュメントをご覧ください。
始める前に
Cloud Functions API を有効にします。
Cloud Functions デベロッパーのロールを Cloud Build サービス アカウントに付与します。
Cloud Build 設定ページを開きます。
Cloud Functions デベロッパーのロールのステータスを「有効」に設定します。
このページで
gcloud
コマンドを実行するには、Google Cloud CLI をインストールします。ビルドして Cloud Functions にデプロイするアプリケーションのソースコードを保持します。 ソースコードは、Cloud Source Repositories、GitHub、Bitbucket などのリポジトリに保存する必要があります。
デプロイを構成する
Cloud Build を使用すると、一般公開されているコンテナ イメージを使用してタスクを実行できます。これを行うには、Cloud Build 構成ファイルのビルド step
にイメージを指定します。
Cloud Functions の gcloud functions deploy
コマンドを使用して、関数コードを含むディレクトリから関数をデプロイします。たとえば、構成ファイルのビルドステップで cloud-sdk
イメージを使用すると、イメージから gcloud
コマンドを使用できます。このビルドステップに渡された引数が Google Cloud CLI に直接渡されるので、このイメージで任意の gcloud
コマンドを実行できます。
Cloud 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 Functions の名前です。 既存の関数を更新する場合、この値は更新する関数の名前と一致する必要があります。FUNCTION_REGION
は、Cloud Functions をデプロイするリージョンです。サポートされているリージョンの一覧については、Cloud Functions のロケーションをご覧ください。--trigger-http
は、この関数のトリガーの種類です。この場合は、HTTP リクエスト(Webhook)です。RUNTIME
は、関数を実行するランタイムです。
gcloud functions deploy
の使用方法については、Cloud 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 Functions へのデプロイを自動化できます。トリガーを構成すると、ソースコードを更新するたびにイメージをビルドしてデプロイできます。
Cloud 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 Functions の名前です。 既存の関数を更新する場合、この値は更新する関数の名前と一致する必要があります。FUNCTION_REGION
は、Cloud Functions をデプロイするリージョンです。サポートされているリージョンの一覧については、Cloud Functions のロケーションをご覧ください。--trigger-http
は、この関数のトリガーの種類です。この場合は、HTTP リクエスト(Webhook)です。RUNTIME
は、関数を実行するランタイムです。
前のステップで作成した構成ファイルを使用して、ビルドトリガーを作成します。
Google Cloud Console で [トリガー] ページを開きます。
ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。
[トリガーを作成] をクリックします。
[名前] 欄にトリガーの名前を入力します。
[リージョン] で、トリガーのリージョンを選択します。
[イベント] で、リポジトリ イベントを選択してトリガーを開始します。
[ソース] で、トリガーを開始するリポジトリとブランチまたはタグ名を選択します。自動ビルドのブランチを指定する方法については、ビルドトリガーの作成をご覧ください。
[構成] で [Cloud Build 構成ファイル(YAML または JSON)] を選択します。
[Cloud Build 構成ファイルの場所] フィールドで、
/
の後に「cloudbuild.yaml
」と入力します。[作成] をクリックして、ビルドトリガーを保存します。
リポジトリに新しいコードを push するたびに、ビルドが自動的にトリガーされ、Cloud Functions にデプロイされます。
Cloud Build トリガーの作成方法については、ビルドトリガーの作成と管理をご覧ください。
次のステップ
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。
- Cloud Run にデプロイする方法を学習する
- GKE にデプロイする方法を学習する
- Firebase にデプロイする方法を学習する
- App Engine にデプロイする方法を学習する
- ビルドエラーをトラブルシューティングする方法について学習する。