Deploying to Cloud Run using Cloud Build

This page explains how to automatically deploy Cloud Run services usingCloud Build. If you're new toCloud Build, read thequickstarts and thebuild configuration overview first.

Cloud Run lets you run stateless images in aserverless environment.Using Cloud Build, you can deploy images from Artifact Registry toCloud Run. You can deploy an existing image, build and deploy an image,or automate the deployment.

Note: You can also use Cloud Deploy to set up a continuous-deliverypipeline to deploy to Cloud Run.Learn more.

Before you begin

  • Enable the Cloud Build, Cloud Run, Artifact Registry, and Resource Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enable permission.Learn how to grant roles.

    Enable the APIs

Required Identity and Access Management permissions

  1. In the Google Cloud console, go to the Cloud BuildPermissions page:

    Go toPermissions

  2. For yourspecified Cloud Build service accountordefault Cloud Build service account, set the status of the following roles toEnabled:

    • Cloud Run Admin (roles/run.admin) | Lets Cloud Build deploy new services to Cloud Run.
    • Storage Admin (roles/storage.admin) | Enables reading and writing from Cloud Storage.
    • Artifact Registry Writer (roles/artifactregistry.writer) | Allows pulling images from and writing to Artifact Registry.
    • Logs Writer (roles/logging.logWriter) | Allows log entries to be written to Cloud Logging.
    • Cloud Build Editor (roles/cloudbuild.builds.editor) | Allows your service account to run builds.

Building and deploying an image

Cloud Build lets you build an image, store the built imagein Artifact Registry, and then deploy the image to Cloud Run.

To build and deploy an image:

  1. In your project root directory, create a config file namedcloudbuild.yaml.

  2. In the build config file, adddocker build steps to build the image andpush it to Artifact Registry, and then add agcloud build step toinvoke thegcloud run deploy command to deploy the image onCloud Run:

    steps:# Build the image-name:'gcr.io/cloud-builders/docker'args:['build','-t','LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE','.']# Push the image to Artifact Registry-name:'gcr.io/cloud-builders/docker'args:['push','LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE']# Deploy image to Cloud Run-name:'gcr.io/google.com/cloudsdktool/cloud-sdk'entrypoint:gcloudargs:['run','deploy','SERVICE_NAME','--image','LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE','--region','SERVICE_REGION']images:-'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'

    Where:

    • REPOSITORY is the name of the Artifact Registryrepository from where you deploy your image.
    • LOCATION is the location of yourArtifact Registry repository, such asus-east1.
    • PROJECT_ID is your Google Cloudproject ID where your image is stored.
    • SERVICE_NAME is the name of theCloud Run service.
    • SERVICE_REGION is theregion of the Cloud Run service you are deploying.
    • IMAGE is the name of your image inArtifact Registry.
  3. Navigate to your project root directory and run the following command, whereLOCATION is one of thesupported build regions to run the build:

    gcloudbuildssubmit--region=LOCATION

After successful completion, a success message is displayed along with the URLof the deployed service.

Continuous deployment

You can automate the deployment of your software to Cloud Run bycreating Cloud Build triggers. You canconfigure your triggers to build and deploy images whenever you update yoursource code.

To automate your deployment:

  1. In your repository root, add a config file namedcloudbuild.yaml with stepsto build the image, push the image to Artifact Registry, and theninvoke thegcloud run deploy command:

    steps:# Build the image-name:'gcr.io/cloud-builders/docker'args:['build','-t','LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA','.']# Push the image to Artifact Registry-name:'gcr.io/cloud-builders/docker'args:['push','LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA']# Deploy image to Cloud Run-name:'gcr.io/google.com/cloudsdktool/cloud-sdk'entrypoint:gcloudargs:-'run'-'deploy'-'SERVICE_NAME'-'--image'-'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'-'--region'-'SERVICE_REGION'images:-'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'

    Where:

    • REPOSITORY is the name of the Artifact Registryrepository from where you deploy your image.
    • LOCATION is the location of yourArtifact Registry repository, such asus-east1.
    • PROJECT_ID is your Google Cloudproject ID where your image is stored.
    • SERVICE_NAME is the name of theCloud Run service.
    • SERVICE_REGION is theregion of the Cloud Run service you are deploying.
    • IMAGE is the name of your image inArtifact Registry.

    The$COMMIT_SHA substitution variable is populated byCloud Build when triggered from a Git repository.

  2. Create a build trigger with the config file created in the previous step:

    1. Open theTriggers page:

      Go to the Triggers page

    2. ClickCreate Trigger.

    3. In theName field, enter a name for your trigger.

    4. UnderRegion, select theregion for your trigger.

      Note: The region for your trigger must match the regionof the Cloud Run service you're deploying to.
    5. UnderEvent, select the repository event to start your trigger.

    6. UnderSource, select your repository and the branch or tag namethat will start your trigger.For more information on specifying which branches to autobuild, seeCreating a build trigger.

    7. UnderConfiguration, selectCloud Buildconfiguration file (YAML or JSON).

    8. In theCloud Build configuration file location field,typecloudbuild.yaml after the/.

    9. ClickCreate to save your build trigger.

    Now, when you push new code to your repository, Cloud Buildinvokes a build and deploys the service to Cloud Run.

Note: To make the deployed service public, make a one-time change to theservice Identity and Access Management settings.

For more information on creating Cloud Build triggers, seeCreating and managing build triggers.

Code examples

Here are some sample repositories, each of which contains a sampleapplication and a build config file to deploy application to Cloud Run:

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.