Continuous Delivery Service provides declarative builds that persist with a given release, support for connecting external workflows, and detailed security and auditing controls, as reported on InfoQ.
Delivery pipelines and delivery targets from Google Cloud Deploy are defined declaratively.
Matt Campbell, an Engineering Director at D2L, further explains in an InfoQ article that delivery pipelines are the definition of the workflow that delivers the application to each target in a deployment progression. A target is a specific Kubernetes cluster into which to deploy the application coupled with the configuration for the environment. Google Cloud Deploy uses Skaffold to render the Kubernetes manifests. Skaffold supports rendering raw manifests as well as manifests from tools such as Helm, Kustomize, and kpt.
Google Cloud Deploy also provides declarative and retained builds with each release. When a new release is promoted, the pipeline and targets are preserved in their current state for that release. The delivery pipeline and target definitions files can be updated, but it will only affect future releases.
“this preservation prevents recent changes to the delivery pipeline definition from affecting the release in ways the generated manifests might not be able to accommodate.”
The delivery pipeline configuration file is the main configuration file for Google Cloud Deploy.
Release approvals can be done via the Console or set up to work through third-party workflow management systems using Pub/Sub and the Google Cloud Deploy API. To require approval on a target, the requireApproval property should be set to true in the target configuration:
Approval of the rollout can then be done via gcloud by a user with the role roles/clouddeploy.approver:
In fact, Matt Campbell further explains that Pub/Sub can be used to automate promotion steps in a release by listening to messages from the topic cloud deploy-operations. When receiving a success message, additional workflow steps such as testing can be run. Once those steps are complete, the release can be promoted to the next stage by calling:
There are a number of metrics tracked automatically by Google Cloud Deploy, such as deployment history, deployment success, and deployment frequency. Metrics are measured by delivery pipeline and are for deployments to production targets (the final target in the progression).