Start Building for Free

Deploy to Google Cloud Platform

1 month ago1 min read
Server v4.x
Server v3.x
On This Page

In this how-to guide, you will learn how to configure CircleCI to deploy to Google Cloud Platform.


Before deploying to Google Cloud Platform, you will need to authorize the Google Cloud SDK and set default configuration settings. Refer to the Authorizing the Google Cloud SDK page for full details.

In addition to the orbs described below, CircleCI has created an GCP convenience image focusing on, deployment: cimg/gcp.

Using Google Cloud orbs

There are several Google Cloud orbs available in the CircleCI Orbs Registry that you can use to simplify your deployments. For example, the Google Kubernetes Engine (GKE) orb has a pre-built job to build and publish a Docker image, and roll the image out to a GKE cluster, as follows:

Make sure to replace any placeholder versions in the example.

version: 2.1

  gke: circleci/gcp-gke@x.y.z # Use the GCP GKE orb in your config

      - gke/publish-and-rollout-image:
          cluster: <your-GKE-cluster> # name of GKE cluster to be created
          container: <your-K8-container-name> # name of your Kubernetes container
          deployment: <your-K8-deployment-name> # name of your Kubernetes deployment
          image: <your-image> # name of your Docker image
          tag: $CIRCLE_SHA1 # Docker image tag - optional

Deployment to GKE with 2.0 configuration

In the following example, if the build-job passes and the current branch is main, CircleCI runs the deployment job.

version: 2.1

  # build job ommitted for brevity
      - image: <docker-image-name-tag>
    working_directory: /tmp/my-project
      - run:
          name: Deploy Main to GKE
          command: |
            # Push Docker image to registry, update K8s deployment to use new image - `gcloud` command handles authentication and push all at once
            sudo /opt/google-cloud-sdk/bin/gcloud docker push${PROJECT_NAME}/hello
            # The new image is now available in GCR for the GCP infrastructure to access, next, change permissions:
            sudo chown -R ubuntu:ubuntu /home/ubuntu/.kube
            # Use `kubectl` to find the line that specifies the image to use for our container, replace with image tag of the new image.
            # The K8s deployment intelligently upgrades the cluster by shutting down old containers and starting up-to-date ones.
            kubectl patch deployment docker-hello-google -p '{"spec":{"template":{"spec":{"containers":[{"name":"docker-hello-google","image":"'"$CIRCLE_SHA1"'"}]}}}}'

      - build-job
      - deploy-job:
            - build-job # Only deploy once the build job has completed
              only: main # Only deploy on the main branch

Suggest an edit to this page

Make a contribution
Learn how to contribute