Cloud Deploy in Google Cloud: Shipping Software Safely, One Stage at a Time
A friendly, in-depth guide to Google Cloud's managed continuous delivery service: pipelines, targets, releases, rollouts, approvals, canary strategies, automation, rollbacks, security and cost, explained from the very beginning.
Picture a bakery that makes a new cake recipe. The baker does not sell the first cake to the public. First it goes to the kitchen team for a taste, then to a small group of regular customers, and only after everyone smiles does it appear in the shop window for everybody. If the first group frowns, the recipe goes back to the baker, and the shop window never sees it. Shipping software should work the same way. Cloud Deploy is the Google Cloud service that plays the role of that careful shop manager: it moves each new version of your application through your environments, step by step, with the right checks, approvals and safety nets along the way.
1What Is Cloud Deploy?
Cloud Deploy is a managed service that automates delivering your application to a series of environments in a planned order.
When a team finishes building a new version of an application, that version still has a journey to make. It must usually be tried in a development environment, then in a testing or staging environment, and finally in production, where real customers use it. Each step has risks, and each step needs the same careful work: putting the right files in the right place, starting the new version, checking that it works and, if something goes wrong, going back to the earlier version.
Cloud Deploy takes over this journey. You describe your environments and the order in which a release should travel through them. Cloud Deploy then handles the movement, keeps a record of what is running where, lets you pause for approvals, and supports gradual strategies and rollbacks. According to Google’s documentation, it currently delivers to Google Kubernetes Engine (GKE) clusters, Cloud Run services and jobs, and GKE attached clusters, which can run in other clouds or on premises.
Think of Cloud Deploy as a railway system for your software. The tracks are your promotion sequence, the stations are your environments, the train is a release, and the signals are approvals and checks. Without the railway, every delivery is a person carrying boxes across fields by hand.
What Cloud Deploy is not
Cloud Deploy does not build your application and does not write your code. Building is the job of a continuous integration system, such as Cloud Build. Cloud Deploy begins where building ends. It takes the finished product, usually a container image, and delivers it. Keeping these two jobs separate is a deliberate design choice, and we will see why it helps in later chapters.
Cloud Deploy gains features and sometimes changes names or limits. Use this guide to learn the ideas, and confirm exact fields, limits and prices on the official pages before you build.
2Why Delivering Software Is Hard
Understanding the pain explains every feature of the service.
In a small project, delivery can be as simple as copying a file to a server. As the project grows, the simple way breaks down. There are more environments, more people, more services and more releases. Small mistakes, such as deploying the wrong version to production or forgetting a setting, have larger consequences. Teams often respond by writing long scripts and checklists, which slowly become fragile and known by only one or two people.
Hand-Made Scripts
Every team builds its own delivery scripts, each slightly different, each understood by few people.
No Clear Record
Nobody can easily say which version is running in which environment, or who approved it.
Risky Big-Bang Releases
Sending a new version to every user at once means a bug hurts everyone at once.
Slow, Scary Rollbacks
When production breaks, teams scramble to remember how to return to the previous version.
Inconsistent Environments
Staging and production drift apart, so tests in staging fail to predict production behavior.
Weak Control
Anyone with credentials can push anything anywhere, which worries security and audit teams.
Delivering by hand is like a small shop where the owner personally carries every order to every customer. It works for ten orders. For ten thousand, you need a delivery company with routes, tracking numbers and receipts.
Teams that ship often are usually healthier, but only when each shipment is safe and reversible. The goal of a delivery service is both speed and safety together.
3Core Concepts and Vocabulary
A handful of words describe the entire service. Learn them once and the documentation becomes readable.
Delivery Pipeline
The definition of the path a release follows, listing the environments in order. It is described in a configuration file.
Target
One environment in the path, such as a development cluster, a staging service or a production service.
Promotion Sequence
The ordered list of targets a release passes through, from first to last.
Release
A specific version of your application, packaged with the rendered instructions for each target. A new release is created for each new version.
Rollout
The act of deploying one release to one target. Each promotion to a new target creates a new rollout.
Promotion
Moving a release forward to the next target in the sequence.
Render
The step that prepares the final instructions for a given target by combining your source files, settings and image references.
Skaffold
An open source tool that Cloud Deploy uses to render, deploy and verify. You keep a skaffold configuration file with your project.
Approval
A human or system decision that must happen before a rollout to a protected target can proceed.
Rollback
Returning a target to the last release that deployed successfully.
Canary
A strategy that sends a new version to a small share of traffic or infrastructure first, before everybody gets it.
Automation
Rules attached to a pipeline that promote, advance or repair rollouts without a person clicking each time.
If the pipeline is a railway line, the targets are stations, a release is a train, a rollout is one train arriving at one station, and a promotion is the signal to continue to the next station.
Beginners often mix these. A release is the version itself and is created once. A rollout is one attempt to put that release on one target, so a single release can have many rollouts over its life.
4Where Cloud Deploy Fits in the Toolchain
Continuous integration builds the product. Continuous delivery ships it. Cloud Deploy handles the second half.
Continuous integration, usually shortened to CI, means that every time a developer saves code, an automatic process builds the application and runs tests. Continuous delivery, CD, means the tested result is automatically prepared and moved through environments toward production. Google Cloud offers a set of services that fit together across both halves.
| Stage | Typical Google Cloud Tool | Job |
|---|---|---|
| Write and test locally | Cloud Code and Skaffold | Develop on your own machine with fast feedback |
| Store source | Any source repository | Keep code under version control |
| Build and test | Cloud Build | Compile code, run tests and create container images |
| Store images | Artifact Registry | Keep versioned container images safely |
| Deliver | Cloud Deploy | Promote releases through environments to GKE or Cloud Run |
| Observe | Google Cloud Observability | Watch logs, metrics and health |
flowchart LR
A["Developer commits code"] --> B["CI build and tests"]
B --> C["Container image in registry"]
C --> D["Create release in Cloud Deploy"]
D --> E["Dev target"]
E --> F["Staging target"]
F --> G["Production target"]
G --> H["Observability and feedback"]
Google’s documentation stresses that any CI tool, script or system can trigger a release, and any source repository or artifact repository can be used. You are not forced to use Cloud Build for the first half, although it fits naturally.
CI is the factory that makes a product and checks its quality. Cloud Deploy is the logistics company that takes the finished product through warehouses and onto store shelves. Each does one job well, and they hand over at a clear point.
The hand-over is the creation of a release. Your build system finishes, then calls Cloud Deploy to create a release that points to the new image.
5The Delivery Pipeline and Promotion Sequence
The pipeline is the heart of the service: it says where releases go and in what order.
A delivery pipeline is defined in a configuration file written in YAML, a simple text format of names and values that people can read easily. According to the documentation, it includes a name, a description, the promotion sequence, optional labels and annotations, and optionally the definitions of the targets themselves. Targets can alternatively live in their own files. The pipeline file is kept alongside your project so that changes to delivery are reviewed like any other change.
Rules about pipelines and targets
Several pipelines may share the same target. For example, two different services might both deliver to the same shared staging cluster. But within a single pipeline, a given target can appear only once in the sequence. This keeps the path unambiguous: a release cannot loop back to a station it already visited.
Name the Pipeline
Choose a clear name, usually one pipeline per application or service.
List Targets in Order
Write the promotion sequence, for instance development, then staging, then production.
Define the Targets
Describe each environment, either in the same file or separate files.
Apply the Configuration
Register the definitions with Cloud Deploy using the command line or automation so the service knows your pipeline.
A pipeline is like a printed route map for a delivery truck. It says first stop, second stop, last stop. Another truck may share a stop with it, but a single truck never visits the same stop twice on one route.
Keep pipeline and target files in version control and apply them through an automated process. Then every change to how you deliver software is reviewed, tracked and reversible.
6Targets: Where Your Software Lands
A target is a destination environment, and the type of target decides how deployment happens.
The documentation lists the supported runtimes as GKE clusters, Cloud Run services or jobs, and GKE attached clusters. Google’s pages also describe custom targets, which let teams deliver to other kinds of destinations through their own deployment logic. Check the current documentation for the full and latest list.
| Target Type | What It Is | Good For |
|---|---|---|
| GKE cluster | A Kubernetes cluster managed by Google | Complex multi-service applications and teams invested in Kubernetes |
| Cloud Run service | A serverless service that runs containers and scales automatically | Web services and APIs without cluster management |
| Cloud Run job | A container that runs to completion rather than serving requests | Batch work and scheduled tasks |
| GKE attached cluster | A Kubernetes cluster outside Google Cloud, attached to it | Delivering to clusters in other clouds or on premises |
| Custom target | A destination you define with your own deployment steps | Platforms the built-in types do not cover |
What a target definition holds
Location Details
Which cluster or Cloud Run region this target points to.
Approval Setting
Whether a person or system must approve rollouts to this target.
Execution Settings
Which identity and settings Cloud Deploy uses when rendering and deploying to this target.
Labels and Parameters
Tags and per-target values that help organize targets and customize what is deployed.
A target is a delivery address. The type of address decides how the courier works: a house with a doorbell, an apartment lobby or a warehouse loading dock. The package is the same, but the handover differs.
Teams sometimes use Cloud Run for early environments for speed and low cost, and a GKE cluster for production. Make sure the application behaves consistently in both.
7Releases: A Version Ready to Travel
A release freezes everything needed to deploy a specific version, so that what you test is exactly what you ship.
A release is created when your CI process or a script calls Cloud Deploy. It points to the exact container images to use, the rendering source, which is the set of files describing your application, and the skaffold configuration. Cloud Deploy then renders the final instructions for each target in the pipeline and stores them. Because the rendered result is stored with the release, it does not change afterwards.
This is a quiet but powerful idea. When you promote a release from staging to production, you are not rebuilding anything. You are moving the same, already-tested bundle forward. The image that passed tests in staging is the very same image that runs in production.
CI Produces an Image
The build finishes and stores a uniquely identified image in a registry.
A Release Is Created
The build system calls Cloud Deploy, naming the pipeline, the images and the source files.
Rendering Happens
Cloud Deploy prepares the final instructions for each target.
The First Rollout Starts
The release is automatically deployed to the first target in the sequence.
The Release Is Promoted
When ready, it moves to the next target, creating a new rollout there.
A release is a sealed shipping container. Everything inside was packed and checked at the factory. As it travels from port to port, nobody opens it and repacks. It either arrives intact or does not arrive.
Point releases to images by a unique identifier, not a moving label such as “latest”. Otherwise two deployments of the same release could run different code.
8Rollouts: One Release on One Target
A rollout is the live act of deployment, and it has a life cycle you can watch.
Every deployment of a release to a target is a rollout. The first release in a pipeline automatically creates a rollout to the first target, and every promotion afterwards creates a new rollout. A rollout moves through states such as waiting for approval, in progress, succeeded or failed. Behind the scenes Cloud Deploy uses Cloud Build to run the deployment step in the same region as your pipeline.
stateDiagram-v2
[*] --> PendingApproval: target needs approval
[*] --> InProgress: no approval needed
PendingApproval --> InProgress: approved
PendingApproval --> Rejected: rejected
InProgress --> Succeeded: deployment healthy
InProgress --> Failed: deployment error
Failed --> InProgress: retry
Succeeded --> [*]
Rejected --> [*]
What you can do with a rollout
Watch
See the status and logs in the console or command line.
Approve or Reject
For protected targets, authorized people decide whether it may proceed.
Advance
For canary rollouts, move on to the next phase when you are satisfied.
Cancel or Retry
Stop a rollout that should not continue, or try a failed one again.
If a release is a train, a rollout is that train’s arrival at one particular station: the doors opening, passengers stepping out, the stationmaster confirming everything is in order.
Each rollout is recorded. Later you can answer questions such as when version 42 reached production and who approved it.
9Skaffold and Rendering Explained
Skaffold is the engine under the hood, and rendering is how one set of files becomes many environment-specific instructions.
Skaffold is an open source command line tool originally designed to speed up development for container applications. Cloud Deploy uses it for three jobs: rendering, deploying and verifying. You keep a skaffold configuration file with your project, and Cloud Deploy runs Skaffold through Cloud Build when needed.
Rendering means producing the final deployment instructions for each target. Your application usually has common instructions, such as which container to run, along with differences per environment, such as how many copies to run or which database to connect to. The render step combines the common files, the per-target differences and the exact image references into a finished set for each target. Render events can send notifications so tools or people know when rendering started and whether it succeeded.
| Skaffold Job | What Happens | Why It Matters |
|---|---|---|
| Render | Builds final manifests for a target from source files and image references | Guarantees each environment gets the correct, complete instructions |
| Deploy | Applies the rendered result to the target | Performs the actual change in the environment |
| Verify | Runs checks after deployment | Confirms the new version behaves as expected |
Rendering is like printing a personalized letter from a template. The template is the same for everyone, but the name and address change for each recipient. Skaffold is the printing press that fills in the blanks correctly every time.
Because developers can use Skaffold on their own machines, they can test how an application renders and deploys before it ever reaches the shared pipeline.
10The Life of a Release, End to End
Putting every concept together in a single story.
sequenceDiagram
participant Dev as Developer
participant CI as CI build
participant CD as Cloud Deploy
participant T1 as Staging target
participant Appr as Approver
participant T2 as Production target
Dev->>CI: Push a code change
CI->>CD: Create release with image
CD->>CD: Render for every target
CD->>T1: Rollout to staging
T1-->>CD: Deployment succeeded
CD->>Appr: Production needs approval
Appr-->>CD: Approved
CD->>T2: Rollout to production
T2-->>CD: Deployment succeeded
Code Changes
A developer pushes a change and the CI build produces a tested image.
Release Created
CI asks Cloud Deploy to create a release referencing the image.
First Rollout
Cloud Deploy deploys to the first target automatically.
Checks and Testing
Automated checks, and people if needed, confirm the release behaves well.
Promotion with Approval
The release moves forward, pausing for approval where configured.
Production and Beyond
The release reaches production, where observability tools confirm real-world health. If problems appear, a rollback restores the earlier version.
It is a relay race. The runner from CI hands the baton to Cloud Deploy, who carries it from checkpoint to checkpoint, stopping when a judge needs to inspect it, and finally crossing the finish line in production.
11Approvals: A Human Gate Before Production
Some changes deserve a second pair of eyes, and approvals build that pause into the pipeline.
You can require approval for any target by setting a flag in the target definition. When a rollout to that target is ready, Cloud Deploy does not start it. Instead it waits, and publishes a message through Pub/Sub, a messaging service, announcing that approval is required. A connected system, such as a ticketing tool or a chat bot, can pick up that message and start its own approval workflow. A person with the right permission then approves or rejects the rollout.
Benefits of Approvals
- Clear accountability for who allowed what
- A place to check change tickets, freeze periods or business timing
- Fits audit and compliance requirements
- Prevents accidental production releases
Costs of Approvals
- Adds waiting time to every release
- Can become a rubber stamp if approvers do not look
- Needs clear ownership and cover for absences
- Too many gates slow teams and encourage workarounds
Approval is also a permission
The right to approve is controlled by access rules, just like other actions. A common good practice is to separate roles: the person or system that creates releases should not be the only one who can approve them for production. This is called separation of duties.
Approval is like the two-key system for a safe. One key holder prepares the delivery. The other confirms the moment is right. Neither can open the safe alone.
Give approvers useful information, such as test results and the list of changes. An approval that takes two seconds and shows no evidence is theater, not control.
12Promotion and Notifications
Promotion moves releases forward, and notifications keep everybody informed along the way.
Promoting a release deploys it to the next target in the sequence, which creates a new rollout. You can promote through the console, the command line or automatically using automation rules, which we will explore soon. Promotion is the heart of the “ship through stages” idea.
Cloud Deploy also publishes notifications through Pub/Sub for important events. According to the documentation, these cover rendering and deployment starting, succeeding and failing, along with approvals being required, granted or rejected. Other systems can subscribe to these messages to post to a team chat, open a ticket, update a dashboard or trigger a further process.
Render Events
Tell you when the preparation of manifests starts and whether it worked.
Deployment Events
Announce when a rollout begins, succeeds or fails.
Approval Events
Announce when an approval is needed, given or refused.
Notifications are the station announcements and the delivery text messages. “Your parcel left the depot.” “Your parcel needs a signature.” Nobody must keep staring at the tracking page.
Route failed deployment and approval-needed messages to a channel someone actually watches. Silent failures are the most expensive kind.
13Deployment Strategy: Standard
The standard strategy is the simplest: deploy the new version in one step.
With a standard deployment, Cloud Deploy puts the new version on the target in a single step, with no gradual traffic shift between old and new versions. Rollback, verification and multi-target deployment are all supported. For many development and test environments, this simplicity is exactly right. Nobody minds if a test environment is briefly unstable, and speed matters more than caution.
Good Fit: Development and Staging
Fast feedback is more important than gradual exposure, because no real customers are affected.
Good Fit: Low-Risk Internal Tools
A small internal application with few users can be safely updated in one step.
Think Twice: Customer-Facing Production
When a bug would hurt many customers at once, a gradual approach such as canary is usually wiser.
A standard deployment is like swapping the sign above a shop door overnight. Quick and simple, and fine if a mistake only means a few people see a typo. For a main storefront, you might want a more careful method.
Even with the standard strategy, you keep rollback ability, history and optional verification. It is simple, not reckless.
14Deployment Strategy: Canary and Progressive Rollouts
A canary sends the new version to a few users first, so problems are found while they are still small.
The name comes from the old practice of miners carrying a canary bird into a mine: if the air turned bad, the small bird showed it first, and the miners had time to leave. In software, the “canary” is a small share of your traffic or infrastructure running the new version. If it behaves, you gradually increase the share. If it misbehaves, only a few users were affected and you pull back.
In Cloud Deploy, a canary rollout moves through canary phases before reaching the final stable phase. According to the documentation, a typical example for Cloud Run is a 50 percent canary, where half of the traffic goes to the new revision and half to the old one, followed by advancing to 100 percent. Percentages must be whole numbers. Canary needs an existing version for comparison, so on the very first deployment to a target, Cloud Deploy may skip the canary phases and go straight to stable.
flowchart LR
A["Old version serves all traffic"] --> B["Canary phase 10 percent new"]
B --> C{"Healthy"}
C -->|"Yes"| D["Canary phase 50 percent new"]
D --> E{"Healthy"}
E -->|"Yes"| F["Stable phase 100 percent new"]
C -->|"No"| G["Roll back to old version"]
E -->|"No"| G
How traffic splitting is done
The mechanism depends on the runtime. On Cloud Run, traffic is divided between revisions. On GKE, Google’s documentation describes approaches that use Kubernetes service networking or the Gateway API. Because the details are specific to each setup, read the current canary guide for your runtime before configuring it.
Planning a good canary
A successful canary is planned before it starts. First, choose the signals that show health, such as the share of requests that fail, how long responses take and any business measure that matters, like completed purchases. Second, choose how long each phase should last. A phase that is too short may end before rare problems appear, while a phase that is too long slows every release. Third, decide what happens on failure: who is alerted, whether an automatic rollback should occur and how the team learns from it afterwards.
It also helps to think about who sees the canary. If the new version receives a random slice of traffic, the same user may see old and new behavior on consecutive requests, which can be confusing if the two versions differ visibly. For changes that affect what users see, teams sometimes combine canaries with feature switches, which are settings inside the application that turn new behavior on for chosen groups. The delivery service controls which code is running, and the feature switch controls who sees the new behavior.
A canary release is like a restaurant testing a new dish on one table before adding it to the menu. If the guests at that table smile, the dish goes to more tables. If they push the plate away, the kitchen changes course and nobody else is disappointed.
A canary only helps if someone or something watches the results. Decide in advance which signals, such as error rate and response time, mean “healthy”, and wire them to alerts.
15Rollbacks: The Safety Net
Every release plan should include a way back.
You can roll back on any target. According to the documentation, a rollback creates a new rollout of the last successfully deployed release, using the same parameters that were used for that earlier deployment. Notice that a rollback is itself a recorded rollout, so your history stays complete and honest: it shows the bad release, the decision and the return.
Rollbacks are quick because the earlier release is already rendered and stored. Nothing needs to be rebuilt. The risk is not in the mechanics, but in what has changed outside the application, such as database structure changes that the old version cannot understand. A safe release plan always asks whether the previous version can still run against the current data.
| Situation | Rollback Safe? | Reason |
|---|---|---|
| Bug in application logic only | Usually yes | Old release works with the same data |
| New column added to a database, still unused by old code | Usually yes | Old code ignores the extra column |
| Column removed or renamed | No | Old code expects the missing column and fails |
| Data converted to a new format | Risky | Old code may not understand the new format |
A rollback is the undo button, and it works well for changes inside the document. But if you also reorganized the filing cabinet, pressing undo does not put the papers back where the old index says they are.
Add new things first, switch to them later, and remove old things last, across several releases. This keeps rollback available at every step.
16Parallel and Multi-Target Deployment
Real products often run in many places at once, and the service can deploy to several at the same time.
Imagine a global application that runs in clusters in several regions. Deploying to each region one by one, by hand, would be slow and error-prone. The documentation describes parallel deployment: one stage of the pipeline can deploy to multiple targets at the same time, and this works with every deployment strategy. In practice, a team defines a parent target that groups child targets, and a single rollout fans out to the children.
flowchart TD
R["Release approved for production"] --> P["Production group target"]
P --> A["Region A cluster"]
P --> B["Region B cluster"]
P --> C["Region C cluster"]
Parallel deployment also affects how you think about failure. If one regional target fails while the others succeed, you have a partial rollout, and the team must decide whether to retry the failed region, roll it back or pause everything. Writing this decision down in advance, as a short runbook, turns a stressful improvisation into a calm checklist.
Why it helps
Speed
All regions receive the release together instead of waiting in line.
Consistency
One decision, one release, one record, so all regions run the same version.
Simplicity
One approval can cover a whole group of destinations.
The trade-off is blast radius. Releasing to all regions together means that a hidden bug reaches all regions together. Many teams therefore deploy first to one pilot region and only then to the rest, using separate stages. Pricing also considers multi-target pipelines, as discussed in the cost chapter.
Parallel deployment is like a chain restaurant introducing a new menu in all branches on the same day. It is efficient and consistent, but if the recipe is flawed, every branch hears about it on day one.
17Automation: Letting the Pipeline Move Itself
Automation rules remove repetitive clicking while keeping control where it matters.
An Automation is a resource attached to a delivery pipeline. It selects one or more targets and holds rules describing what should happen automatically. Each time a rule fires, a record called an automation run is created. You can suspend an automation without deleting it, and a pipeline can hold a large number of rules, documented as up to 250.
Promote Release
After a successful rollout to the source target, automatically promote to the next target or a specific one, with an optional waiting time.
Timed Promotion
Promote according to a schedule, for example during a quiet maintenance window.
Advance Rollout
For canary rollouts, move from one phase to the next after a chosen wait time.
Repair Rollout
After a failed rollout, retry a set number of times, and if all attempts fail, roll back to the most recent successful release.
How an automation is organized
Think of an automation as a small rulebook with a clear subject. It names the targets it watches, called selectors, and then lists rules. When a rollout on a watched target reaches a certain state, the matching rule acts. For example, “after a successful rollout to staging, wait thirty minutes, then promote to the production pilot”. Every action leaves a record, so you can read exactly why the pipeline moved. Platform logs are still produced when an automation is suspended, which lets you test a new rule safely before it is allowed to act.
Waiting times are an underrated feature. A short wait after a successful staging rollout gives monitoring a chance to reveal slow-burning problems. A longer wait between canary phases gives rare errors time to show up. Choosing these waits is a business decision about how much patience you can afford, and they are easy to adjust as you learn.
Combining rules wisely
A common arrangement uses automatic promotion between development and staging, where speed matters, but keeps manual approval for production. A repair rule on production gives a safety net: if a deployment fails, it retries a couple of times and then returns to the last good version without waking anyone at night.
Automation is like cruise control on a car. It keeps a steady pace on the open road, but you still steer, and you can take over the pedals the moment anything unusual appears.
Each rule may need extra permissions beyond the basic automation permissions. Check the automation rule documentation for exactly what each rule requires.
18Verification and Deploy Hooks
Deploying is not the same as working. Verification checks that the new version is actually healthy.
A deployment can succeed technically, meaning the files were applied and the processes started, while the application itself is broken. Maybe it cannot reach its database, or it answers every request with an error. Verification adds an automatic check after deployment. Cloud Deploy supports verification through Skaffold, where you define a test, often a container that runs a few requests against the new version and reports whether they passed. If verification fails, the rollout is marked as failed and the failure can trigger your repair rules.
Cloud Deploy also supports hooks, which are extra steps that run before or after a deployment. A pre-deployment hook might prepare something, such as announcing a maintenance window. A post-deployment hook might run a cleanup or notify another system. Exact capabilities and configuration vary, so read the current documentation on verification and hooks before relying on them.
| Check Type | Example | When It Runs |
|---|---|---|
| Smoke test | Request the home page and the health endpoint | Right after deployment |
| Integration test | Create and read a sample record through the new version | After deployment to staging |
| Pre-deployment hook | Confirm that required settings exist | Before the new version is applied |
| Post-deployment hook | Send a message to the support team | After a successful deployment |
Deploying without verification is like installing a new lift and walking away as soon as the last bolt is tightened. Verification is the engineer who presses every button, rides to every floor and only then signs the certificate.
A good verification step takes seconds to a few minutes and tests what customers truly depend on. Tests that always pass teach nothing, and tests that take an hour will be skipped.
19Environment Differences and Deploy Parameters
Staging and production should be alike, but never identical, and the differences must be managed carefully.
Every environment needs some different values. Production might run ten copies of a service while development runs one. The address of the database differs. The log detail level differs. If you copy whole files and edit them by hand for each environment, the files drift apart and mistakes creep in. Cloud Deploy supports passing parameters into the rendering step so that one shared description can produce environment-specific results. The documentation describes deploy parameters that can be attached at the pipeline, target or release level; confirm the current rules about where each can be used.
Keep a Shared Base
Write one description of the application used by all environments.
Add Small Overlays
For each environment, keep only the values that truly differ, such as copy count or addresses.
Pass Parameters at Delivery Time
Supply values through the target or the release so that they appear in the rendered result.
Review the Rendered Output
Inspect what will actually be applied to each environment before approving production.
A franchise uses the same recipe book in every branch but lets each branch set its own opening hours and local supplier. The base recipe is shared, and the small local settings are written on a separate sticker.
Passwords and keys do not belong in pipeline files or release parameters, because many people can read them. Store secrets in a dedicated secret service and give the application permission to read them at run time.
20Custom Targets and Extending the Service
When the built-in destinations do not fit, you can describe your own.
Not every organization runs on Google Kubernetes Engine or Cloud Run. Some deliver to virtual machines, to other cloud platforms, to internal systems or to special hardware. Google’s documentation describes custom targets, in which you provide the rendering and deployment logic yourself, often as containers that Cloud Deploy runs, and the service continues to supply the pipeline structure, promotion, approvals, history and automation around it.
The attraction is that you keep a single, consistent delivery process, even though the destinations differ. The cost is that you now own the code that does the deployment, including its testing and maintenance. Use custom targets only when no built-in target can meet your needs, and read the current documentation to learn what is supported.
Why Use a Custom Target
- One delivery process across very different platforms
- Approvals, history and automation come along for free
- Teams migrate gradually without changing their process
What It Costs
- You must write, test and maintain the deployment logic
- Fewer built-in conveniences than first-class targets
- Extra care needed for permissions and error handling
A courier company normally delivers to houses and offices. For a remote island, you hire a boat owner to do the last mile. The company’s tracking and receipts still work, but the boat is your responsibility.
21Identity and Access Management
Delivery tools have the keys to production, so who can do what must be planned carefully.
Google Cloud controls access through Identity and Access Management, called IAM. In Cloud Deploy, different actions need different permissions: creating pipelines and targets, creating releases, approving rollouts, promoting, and managing automations. The service also uses a service account, which is a non-human identity, to render and deploy. That identity needs permission to act on the target environment, such as updating a Cloud Run service or a cluster.
| Person or System | Should Be Able To | Should Not Be Able To |
|---|---|---|
| CI system | Create releases in the pipeline | Approve production or edit targets |
| Developers | View pipelines, releases and rollouts | Deploy directly to production outside the pipeline |
| Release managers | Promote and approve production rollouts | Change the build system |
| Platform team | Define pipelines, targets and automations | Approve their own release changes alone |
| Deployment identity | Update only the environments it serves | Access unrelated projects or data |
Principles to follow
Least Privilege
Grant the smallest role that does the job, and no more.
Separate Identities per Environment
Use a different deployment identity for production than for development, so a development mistake cannot touch production.
Separation of Duties
The one who creates a release should not be the only one who approves it for production.
No Shared Personal Accounts
Use named people and service accounts so the audit record means something.
Think of a warehouse. The driver can deliver parcels to the dock, the manager signs for valuable ones, and the cleaner has a key to the corridor only. No single key opens every door.
Predefined roles and permission names can evolve. Review the official access control page when designing your roles, and prefer predefined roles over powerful general ones.
22Software Supply Chain Security
A delivery pipeline is a favorite target for attackers, because whatever it ships runs with trust.
If an attacker slips a malicious image into your pipeline, the pipeline itself will deliver it all the way to production. Protecting the supply chain means making sure that only trusted, verified software travels through. Several Google Cloud capabilities relate to this, including vulnerability scanning of images in the registry and policy tools that can require images to be signed or attested before deployment. Cloud Deploy fits into this picture because releases refer to specific image identifiers and because it records what was deployed. The exact integrations and their availability change, so confirm the current documentation for features such as attestation checks.
Build in a Trusted Place
Use a controlled build service so images are not created on personal laptops.
Scan for Known Weaknesses
Check images for known vulnerabilities and set limits on what severity is acceptable.
Sign or Attest
Record that an image passed the required checks, in a way that cannot be forged easily.
Enforce at Deployment
Allow only images that carry the proof of passing, and refuse everything else.
Keep the Record
Retain audit trails of who deployed what, so you can investigate quickly.
It is like food safety. Ingredients are inspected on arrival, the kitchen is checked, packages carry sealed labels, and the shop refuses unlabeled boxes. Safety comes from checks at every step, not one inspection at the door.
Protect the pipeline definitions, build configuration and deployment identities as carefully as production itself. Whoever controls them effectively controls production.
23Observability, Logs and Audit
You cannot manage what you cannot see, and delivery produces useful signals at every step.
Cloud Deploy collects metrics and audit details throughout pipeline execution. Logs from rendering and deployment are available through Google Cloud’s logging service, audit logs record who did what, and Pub/Sub notifications announce key events. Combined with application metrics from your running services, these signals answer the questions that matter during and after a release.
Delivery Logs
Show what rendering and deployment did, and why a step failed.
Audit Logs
Show who created releases, approved rollouts and changed configuration.
Notifications
Push important events to chat, tickets or dashboards.
Application Health
Error rates and response times of the new version show whether the release is good for users.
Making signals useful to people
Raw logs are rarely read in the middle of an incident. What people need is a short, clear story: which release, which target, which stage, what changed and what the current state is. Teams often build a simple dashboard or chat summary fed by delivery notifications, showing the latest release in each environment, any rollout waiting for approval and any recent failures. A new team member can then understand the state of delivery within a minute, without learning the whole system first.
Alerts deserve the same care. An alert should tell the receiver what happened, why it matters and what to do first. Alerts that fire constantly teach people to ignore them, so tune them to the few conditions that truly need a human, such as a production rollout failing, a canary showing rising errors or an approval waiting too long.
Useful delivery measures
Many organizations track a few simple measures of delivery health, popularized by research on high-performing teams. Deployment frequency shows how often you ship. Lead time shows how long a change takes from commit to production. Change failure rate shows how often releases cause problems. Time to restore shows how fast you recover. Delivery records from Cloud Deploy supply raw material for these numbers.
The logs are the flight recorder, the notifications are the cockpit alarms, and the application metrics are the passengers’ comfort. A good flight needs all three.
Mark release times on your monitoring graphs. When a graph changes shape, you can instantly see whether a release happened just before.
24Pricing and Cost Awareness
The service itself is priced simply, and the supporting services are where most costs hide.
According to the pricing page, the unit of billing is an active delivery pipeline. A pipeline counts as active in a billing month if at least one release or rollout was created for it. The first active multi-target pipeline in a billing account is free. Each additional active multi-target pipeline was listed at five US dollars per month. Single-target pipelines, which use exactly one target, are not charged. Pricing is tied to the pipeline name, so deleting a pipeline and creating another with the same name counts as one pipeline.
Cloud Deploy also relies on other services that are billed separately. Cloud Build runs the render and deploy steps. Cloud Storage holds the rendered files in a bucket in the same region as the pipeline. Audit logging and the logging service store records. Always confirm current numbers on the official pricing page, since prices and free allowances can change.
| Cost Item | Billed By | What Drives It |
|---|---|---|
| Active multi-target pipelines | Cloud Deploy | Number of pipelines with releases or rollouts in the month |
| Render and deploy work | Cloud Build | Amount and length of render and deploy steps |
| Rendered files | Cloud Storage | Number and size of releases kept |
| Logs and audit records | Logging services | Volume of logs you keep |
| The deployed workloads | GKE, Cloud Run and others | The environments you deliver to, often the largest cost |
Ways to keep costs sensible
One Pipeline per Application
Avoid creating many near-identical pipelines when one with several stages would do.
Retire Unused Pipelines
Inactive pipelines are not billed, but they still add clutter and security surface.
Trim Old Releases and Logs
Apply sensible retention to stored files and logs.
Shut Down Idle Environments
Temporary test environments can be removed or scaled down after use.
Cloud Deploy’s fee is like the booking fee on a courier route, small and predictable. The real expense is the trucks, the warehouses and the fuel, which are the environments you deliver to.
Estimate your bill with Google’s pricing calculator and review your billing reports after the first month, because real usage often differs from plans.
25A Reference Architecture
A typical, sensible setup that many teams can adopt and adjust.
In this arrangement, developers push code to a repository. A trigger starts a build that tests the code, creates a container image, scans it and stores it in a registry. The build then creates a release in Cloud Deploy. The release deploys to a development target automatically, then is promoted to staging with checks, and then, after human approval, to production using a canary strategy. Notifications go to a team chat, and monitoring watches the canary.
flowchart TD
A["Source repository"] --> B["Build and test"]
B --> C["Scan and store image"]
C --> D["Create release"]
D --> E["Dev target auto deploy"]
E --> F["Staging target with verification"]
F --> G["Approval gate"]
G --> H["Production canary phases"]
H --> I["Production stable"]
D -.-> N["Notifications to chat and tickets"]
H -.-> M["Monitoring and alerts"]
M -.-> R["Repair or rollback"]
Walking through a normal day
On an ordinary morning a developer merges a small fix. Within minutes the build finishes and a release appears in the pipeline. It lands on the development target without anyone touching a button. The team lead sees the staging rollout succeed and verification pass, so she approves the production rollout before lunch. The canary starts at a small share of traffic, a dashboard shows normal error rates, and the automation advances the phases while the team eats. By the afternoon the release is stable in production, and nobody had to remember a single command. That quiet, repeatable rhythm is the real product Cloud Deploy gives a team.
On a bad day the same rhythm protects you. Suppose the canary shows rising errors. The monitoring alert fires, the rollout is stopped or rolled back, and only a small share of users ever saw the problem. The rollout history records exactly what happened, and the team fixes the bug in a new release that goes through the same steps. Nobody has to improvise under stress, because the path was already built.
Choices inside the architecture
Projects
Many teams place the pipeline in a shared delivery project and keep each environment in its own project for strong separation.
Regions
Keep the pipeline in a region that suits your teams, and note that rendering and storage use the pipeline’s region.
Triggers
Create releases automatically from the build for every successful change, or only for tagged versions if you prefer controlled cadence.
Approval Points
Place gates before production, and perhaps before regulated environments, but not everywhere.
The architecture is an airport. Check-in is the build, security is the scan, the gate is the approval, and the runway is production. Passengers move smoothly because each area has one clear job.
26Designing Your Environments
The number and shape of your stages is a design decision with real trade-offs.
More stages mean more safety but more time and cost. Fewer stages mean speed but less protection. A good starting point for many teams is three: development, staging and production. Development accepts every change automatically and exists for quick feedback. Staging closely resembles production and runs deeper checks. Production receives only releases that passed staging, often through approval and a canary.
| Stage | Purpose | Strategy | Approval |
|---|---|---|---|
| Development | Fast feedback for developers | Standard | None |
| Staging | Realistic testing and verification | Standard with verification | None or light |
| Production pilot | Small real-world exposure | Canary | Required |
| Production full | Everyone receives the release | Canary advancing to stable | Often automated after healthy pilot |
Thinking about teams and ownership
Environments also reflect how people are organized. In a small company, one team often owns the whole path from code to production, and a single pipeline with three stages is perfect. In a larger company, a platform team may own the targets and the rules for production, while product teams own their own releases and the early stages. This division works well when it is written down clearly: the platform team decides what protections production requires, and product teams decide how often and how fast they ship within those protections.
Be careful with shared environments. When many pipelines deliver to the same staging cluster, one team’s broken release can disturb everyone else’s tests. Teams often solve this by giving each service its own namespace or its own small environment, or by scheduling heavy tests carefully. The point is that environment design is partly a technical question and partly a question about how people work together, and both deserve attention.
Keeping staging honest
Staging is only valuable if it resembles production. Use the same kind of runtime, the same configuration structure and similar data shape and volume, as far as cost and privacy allow. A staging environment that is much simpler than production will happily approve releases that then fail for real customers.
Staging is a dress rehearsal. If the rehearsal is held in a different theater with no lights and no audience, it tells you little about opening night.
Begin with the simplest sequence that protects production. Add stages when incidents or compliance needs show a real gap.
27Real-World Scenarios
Stories show how the pieces work together in daily life.
Scenario 1: Small Team with Cloud Run
A team of five runs a web API on Cloud Run. Every merged change builds an image and creates a release. It deploys automatically to development and, after a smoke test, to staging. A team lead approves production, which uses a 50 percent canary and then advances to full traffic. One simple pipeline replaced a folder of scripts nobody dared to touch.
Scenario 2: Many Microservices on GKE
A company has forty services. Each has its own pipeline following a common template maintained by the platform team. Teams control their own releases, while the platform team controls the targets and approval rules. Consistency across services makes support and audits far easier.
Scenario 3: Regulated Industry
A financial firm requires change tickets for production. A connected ticketing system listens to approval-needed notifications, opens a ticket and approves the rollout only after the ticket is authorized. Audit logs plus the rollout history satisfy the auditor’s questions about who approved what and when.
Scenario 4: Global Application
A consumer app runs in several regions. A pilot region receives each release first. After a healthy period, an automation promotes the release to a group target containing the remaining regions, which deploy in parallel.
Scenario 5: Nightly Batch Jobs
A data team delivers Cloud Run jobs through a pipeline so that job versions are tracked and tested before the nightly run, with timed promotion to production after business hours.
Scenario 6: Hybrid Environment
An organization keeps some clusters on premises for data reasons. Those clusters are attached to Google Cloud and used as targets, so the same pipeline and approvals serve both cloud and on-premises environments.
All these stories use the same railway with different timetables. Small towns run a few trains, big cities run many, and cargo lines add checks, but the tracks and signals are the same.
28Cloud Deploy Compared with Other Approaches
There is more than one way to deliver software, and each has its place.
| Approach | Strength | Weakness | Best For |
|---|---|---|---|
| Cloud Deploy | Managed pipelines, promotion, approvals, canary, history and rollback in one service | Focused on supported runtimes and its own model | Teams delivering to GKE and Cloud Run who want a managed, auditable process |
| Scripts inside the CI tool | Fast to start, familiar | Hard to audit, inconsistent, tangled with building | Very small projects and prototypes |
| Git-based continuous reconciliation tools | Environment state lives in a repository and is continuously enforced | You operate the tool and design promotion yourself | Kubernetes-focused teams who want repository-driven control |
| Manual deployment | No tooling needed | Slow, error-prone, unrecorded | Nothing that matters |
These approaches are not enemies. Some organizations use a repository-driven tool inside clusters and still use a managed delivery service to orchestrate the promotion of releases between environments. Choose based on where your team’s strengths lie and which platforms you deliver to, and evaluate with a small pilot before committing.
Choosing among them is like choosing between your own van, a hired courier company and a freight railway. The van is quickest to start, the courier is convenient and tracked, and the railway shines for big, regular loads. Match the vehicle to the load.
Deliver one low-risk service through each candidate approach and compare effort, visibility and safety before choosing for the whole company.
29Key Design Decisions
Architects write down significant choices so that later teams understand the reasons.
Separate building from delivering
Let the CI system build and test, and let Cloud Deploy handle promotion through environments.
Reason: each tool does one job well, and the same tested image moves through every stage. Trade-off: two systems to learn and connect.
Promote the same release, never rebuild per environment
Build once, reference images by unique identifier and promote the same release through every target.
Reason: what was tested is exactly what ships. Trade-off: configuration differences must be handled through parameters, not by rebuilding.
Canary for customer-facing production
Use a canary strategy with health-based advancement for production services.
Reason: limits the damage of a bad release. Trade-off: slower releases and the need for good monitoring.
Automate early stages, gate production
Promote automatically through development and staging, and require approval before production.
Reason: speed where risk is low and control where risk is high. Trade-off: production waits for a human, so cover for absences is needed.
Separate environments into separate projects
Keep production in its own project with its own deployment identity.
Reason: stronger isolation and clearer permissions. Trade-off: more projects to manage and more cross-project permissions to configure.
A decision record is a ship’s log. Years later, a new captain reads why the ship changed course and avoids sailing back to the same rocks.
30Common Mistakes and Anti-Patterns
Learning from the mistakes of others is the cheapest education.
Healthy Habits
- Build once and promote the same release
- Reference images by unique identifier
- Keep pipeline files in version control
- Verify after deployment and watch canaries
- Rehearse rollbacks before you need them
Risky Habits
- Rebuilding a different image for each environment
- Using moving labels such as “latest”
- Giving everyone permission to deploy to production
- Approving without looking at evidence
- Putting secrets into pipeline files
Five classic traps in detail
Staging That Does Not Resemble Production
Releases pass staging easily, then fail in production because of missing data volume, different settings or simpler infrastructure.
Canary Without Metrics
A canary phase that nobody watches is just a slow deployment. Define healthy signals and alerts first.
Rollback Blocked by Data Changes
The new version changes the database in a way the old version cannot read, so going back is impossible.
Approval Fatigue
Too many approvals turn into automatic clicking, and people stop reading. Keep gates few and meaningful.
Over-Broad Deployment Identity
One powerful identity deploys everywhere, so a single compromise or mistake reaches all environments.
These traps are loose floorboards in a house. Each one looks harmless until someone carries something heavy across it.
31Troubleshooting Guide
When something fails, work calmly from the simplest cause to the hardest.
| Symptom | Likely Cause | What To Try |
|---|---|---|
| Release creation fails | Missing permission, wrong pipeline name or invalid configuration file | Check the error message, the identity used by the build, and the pipeline name and region |
| Render fails | Mistake in source files, bad image reference or missing skaffold configuration | Render the same files locally with Skaffold and read the logs |
| Deployment fails with permission errors | Deployment identity cannot update the target | Grant the narrow role needed on the target environment |
| Rollout waits forever | Approval required but nobody was notified | Check notification routing and who holds the approver role |
| Canary does not advance | Waiting for manual advance or automation rule not matching | Review the automation selector and wait time, and the current phase |
| Rollback fails | Earlier release incompatible with current data or settings | Fix forward with a new release, and plan backward-compatible changes in future |
| Unexpected bill | Many active multi-target pipelines or heavy build and logging use | Review pipelines, retention and billing reports by service |
| Wrong version running | Moving image label or manual changes outside the pipeline | Use unique image identifiers and restrict direct changes |
A calm method
Find the Stage That Failed
Was it release creation, rendering, approval or deployment? Each has different causes.
Read the Logs
The logs usually name the cause plainly, such as a missing permission or a bad reference.
Reproduce Locally
Rendering the same files on your machine isolates the problem quickly.
Change One Thing at a Time
Fix a single suspect, retry and compare, so you know what helped.
Troubleshooting is tracing a lost parcel. You check each scanning point in order, find where the trail stops, and then ask what happened at that exact point.
32Best Practices Checklist
A short list to review before every important launch.
Build Once, Promote Everywhere
Use one immutable release per version and never rebuild per environment.
Keep Environments Alike
Make staging resemble production in runtime, settings and data shape.
Start with Three Stages
Development, staging and production are enough for many teams. Add more only for a clear reason.
Use Canary for Critical Services
Expose a small share first and define healthy signals in advance.
Verify Automatically
Run quick smoke tests after every deployment, and fail the rollout when they fail.
Rehearse Rollbacks
Practice returning to the previous release in staging, and make database changes backward compatible.
Least Privilege and Separate Duties
Give each identity only what it needs, and separate release creation from production approval.
Delivery as Code
Keep pipeline and target definitions in version control with reviews.
Notify the Right People
Send approval-needed and failure messages to channels that people watch.
Track Delivery Health
Measure frequency, lead time, failure rate and recovery time, and improve steadily.
Follow Product Updates
Read release notes so changes in features, limits and prices never surprise you.
A pilot walks through the same checklist before every flight, however experienced. The list does not express doubt. It expresses respect for what could go wrong.
33Frequently Asked Questions
Quick answers to the questions beginners ask most often.
No. Cloud Build is a build and CI service that compiles code, runs tests and creates images. Cloud Deploy delivers finished releases through environments. They work together: Cloud Build usually creates the release, and Cloud Deploy promotes it. Cloud Deploy also uses Cloud Build behind the scenes to run render and deploy steps.
The documentation lists GKE clusters, Cloud Run services and jobs, and GKE attached clusters, plus custom targets for other destinations. Because supported platforms expand over time, confirm the current list in the official documentation.
A release is a specific version of your application with its rendered instructions, created once. A rollout is one deployment of that release to one target. One release can create many rollouts as it is promoted and sometimes retried.
You need a basic skaffold configuration file because Cloud Deploy uses Skaffold for rendering, deploying and verifying. You do not need deep expertise at first. Start from a simple example in the documentation and grow from there.
Yes. You set an approval requirement in the target definition. Cloud Deploy then waits and publishes an approval-needed message. An authorized person or connected system approves or rejects the rollout.
A rollback creates a new rollout of the last successfully deployed release to that target, using the same parameters as that earlier deployment. Because the earlier release is stored, nothing needs to be rebuilt. Remember that data changes outside the application can still make going back unsafe.
It is a strategy that sends the new version to a small share of traffic or infrastructure first, then increases the share in phases if all looks well. If problems appear, you stop early and only a few users are affected.
Yes. Automation rules can promote a release after a successful rollout, promote on a schedule, advance canary phases after a wait time, and repair failed rollouts by retrying and then rolling back to the last successful release.
The pricing page described billing per active multi-target delivery pipeline, with the first one per billing account free and single-target pipelines not charged. Supporting services such as Cloud Build and Cloud Storage are billed separately. Prices change, so check the official page.
Yes. Any CI tool or script that can call Cloud Deploy and has the right permissions can create releases. Cloud Build is a natural fit, but it is not required.
Usually a pipeline represents one application or service. Many teams create one pipeline per service from a shared template. Several pipelines can share the same target, but a target may appear only once within a single pipeline.
Keep secrets out of pipeline files, release parameters and images. Use a secret management service and let the running application read secrets with its own limited identity.
Rollout history shows which release went to which target and when, and audit logs show which identity performed each action. Use named people and separate service accounts so the record is meaningful.
Canary needs an existing version to compare against. On the first deployment to a target, Cloud Deploy may go straight to the stable phase. Later canaries behave normally.
Yes, through parallel deployment, where one stage deploys to several targets together. Many teams still use a pilot region first to limit risk.
Consider a custom target, where you supply the deployment logic while Cloud Deploy supplies the pipeline structure, approvals and history. Be ready to maintain that logic yourself.
No. It delivers what your build and tests produced. It can run verification after deployment, but the main test suite still belongs in your CI process and in staging.
Start with development, staging and production. Add more only when there is a clear need, such as compliance, a regional pilot or extra testing. Each stage adds time and cost.
Make changes backward compatible across several releases: add new structures first, switch the application to use them next, and remove old structures last. That keeps rollback possible at every step.
Pick one small service, create a two-stage pipeline with a development and a staging target, connect your build to create releases, and try a promotion and a rollback. Then add approvals, verification and a canary for production.
Not necessarily. Canaries add time and need good monitoring. They pay off for customer-facing services where a bad release is costly. Internal tools and low-traffic services may do fine with the standard strategy, provided they keep verification and rollback.
The rollout is marked as failed and notifications are published. You can retry it, cancel it or roll back. A repair automation rule can perform retries automatically, and if every attempt fails it can create a rollback rollout to the last successful release.
Yes. The console and command line show the latest release and rollout for each target in a pipeline, so one screen answers the common question of what is running where, and since when.
Keep them in a version-controlled repository, either next to the application or in a central platform repository, and apply them through an automated process. That makes every change to delivery reviewable and reversible.
Remove direct deployment permissions from people on production environments, and let only the pipeline’s deployment identity make changes there. Keep a documented emergency procedure for real incidents, with extra logging and review afterwards.
Yes. A small team can start with a simple two-stage pipeline and gain history, approvals and rollback quickly. Single-target pipelines are not charged, and the first multi-target pipeline per billing account was free at the time of writing, so trying it costs little.
Cloud Deploy publishes events to Pub/Sub. A small subscriber, such as a serverless function, reads those messages and posts them to chat or opens a ticket. Many teams build this once and reuse it for every pipeline.
Track how often you deploy, how long a change takes from commit to production, how often releases cause incidents, and how fast you recover. Improving these together, not just speed, shows healthier delivery.
34Summary and Key Takeaways
Everything in this guide on one short page.
Cloud Deploy is a managed continuous delivery service. You describe a pipeline of targets, your build system creates releases, and the service renders, deploys, pauses for approvals, supports canary strategies and rollbacks, and records everything. It works best when combined with a good build process, honest staging, careful permissions and watchful monitoring.
Key Takeaways
- Cloud Deploy delivers finished releases through an ordered pipeline of targets such as GKE clusters and Cloud Run services, while a separate CI system builds and tests.
- A release is a sealed, versioned bundle. Each deployment of it to a target is a rollout. Build once and promote the same release to keep tested and shipped code identical.
- Use approvals before production, canary strategies for customer-facing services and automation to promote, advance and repair, keeping humans in charge of the high-risk steps.
- Verify every deployment, watch health signals during canaries and rehearse rollbacks, remembering that database changes must be backward compatible.
- Apply least privilege, separate identities and duties, keep secrets out of pipeline files and protect the pipeline as carefully as production.
- Watch cost across pipelines, builds, storage and logs, and confirm current prices and limits on the official pages.
- Start small with three stages, treat delivery configuration as code, track delivery health measures and keep up with product updates.