This page explains how to deploy applications to Cloud Run functions using Cloud Build. If you're new to Cloud Build, read the quickstarts and the Build configuration overview first.
Cloud Run functions is a serverless execution environment for building and connecting cloud services. With Cloud Run functions you write simple, single-purpose functions that are attached to events emitted from your cloud infrastructure and services. Your function is triggered when an event being watched is fired. For more information on Cloud Run functions, read Cloud Run functions documentation.
Before you begin
Enable the Cloud Run functions API:
Grant the Cloud Run functions Developer role to the your build service account:
Open the Cloud Build Settings page:
Set the status of the Cloud Run functions Developer role to Enabled.
To run the
gcloud
commands in this page, install the Google Cloud CLI.Keep your application source code that you want to build and deploy to Cloud Run functions handy. Your source code needs to be stored in a repository, such as Cloud Source Repositories, GitHub, or Bitbucket.
Configuring the deployment
Cloud Build enables you to use any publicly available container image
to execute your tasks. You can do this by specifying the image in a build step
in the Cloud Build config file.
Cloud Run functions provides the gcloud functions deploy
command, which
deploys your function from the directory containing your function code.
You can use the
cloud-sdk
image
as a build step in your config file to invoke gcloud
commands within the image.
Arguments passed to this build step are passed to Google Cloud CLI directly,
allowing you to run any gcloud
command in this image.
To deploy an application to Cloud Run functions, use the following steps:
- In your project root directory, create the
Cloud Build configuration file
named
cloudbuild.yaml
orcloudbuild.json
. In the config file:
- Add a
name
field and specify thegcloud
build step. - Add
functions deploy
to theargs
field to invoke thegcloud functions deploy
command. For available configuration options, seegcloud functions deploy
reference. --source=.
implies that the source code is in the current working directory.
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" ] } ] }
Replace the placeholder values in the config file above with the following:
FUNCTION_NAME
is the name of the Cloud Run functions you are deploying. If you're updating an existing function, this value must match the name of the function you're updating.FUNCTION_REGION
is the region to which you're deploying Cloud Run functions. For a list of supported regions, see Cloud Run functions locations.--trigger-http
is the trigger type for this function, in this case an HTTP request (webhook).RUNTIME
is the runtime in which to run the function.
For more information on using
gcloud functions deploy
, see the Cloud Run functions documentation.- Add a
Start the build using the config file created in the previous step:
gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY
Replace the placeholder values in the config file above with the following:
CONFIG_FILE_PATH
is the path to the build config file.SOURCE_DIRECTORY
is the path or URL to the source code.REGION
is one of the supported build regions.
If you don't specify a
CONFIG_FILE_PATH
andSOURCE_DIRECTORY
in thegcloud builds submit
command, Cloud Build assumes that the config file and the source code are in the current working directory.
Continuous deployment
You can automate the deployment of your software to Cloud Run functions by creating Cloud Build triggers. You can configure your triggers to build and deploy images whenever you update your source code.
To automate your deployment to Cloud Run functions:
In your repository root, add a config file with steps to invoke the
gcloud functions deploy
command: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" ] } ] }
Replace the placeholder values in the config file above with the following:
FUNCTION_NAME
is the name of the Cloud Run functions you are deploying. If you're updating an existing function, this value must match the name of the function you're updating.FUNCTION_REGION
is the region to which you're deploying Cloud Run functions. For a list of supported regions, see Cloud Run functions locations.--trigger-http
is the trigger type for this function, in this case an HTTP request (webhook).RUNTIME
is the runtime in which to run the function.
Create a build trigger with the config file created in the previous step:
Open the Triggers page in the Google Cloud console:
Select your project from the project selector drop-down menu at the top of the page.
Click Create Trigger.
In the Name field, enter a name for your trigger.
Under Region, select the region for your trigger.
Under Event, select the repository event to start your trigger.
Under Source, select your repository and the branch or tag name that will start your trigger. For more information on specifying which branches to autobuild, see Creating a build trigger.
Under Configuration, select Cloud Build configuration file (YAML or JSON).
In the Cloud Build configuration file location field, type
cloudbuild.yaml
after the/
.Click Create to save your build trigger.
Anytime you push new code to your repository, you will automatically trigger a build and deploy on Cloud Run functions.
For more information on creating Cloud Build triggers, see Creating and managing build triggers.
What's next
- Learn how to perform blue/green deployments on Compute Engine
- Learn how to deploy on Cloud Run
- Learn how to deploy on GKE
- Learn how to deploy on Firebase
- Learn how to deploy on App Engine
- Learn how to troubleshoot build errors.