This page describes how to use Cloud Deploy service notifications, including how to subscribe to them.
Cloud Deploy uses Pub/Sub to publish notifications for two purposes:
To let you integrate Cloud Deploy with third-party tools and other Google tools, such as tools for workflow ticketing or test infrastructure.
To extend Cloud Deploy with supplemental business logic.
Available topics
Cloud Deploy publishes messages to the following set of Google Pub/Sub topics:
clouddeploy-resources
When there is an operation (create, update, delete) against any Cloud Deploy core resource (automation, custom target type, delivery pipeline, job run, release, rollout, target).
clouddeploy-operations
- When Cloud Deploy renders the Skaffold configuration.
- When Cloud Deploy deploys to a target (
Start
,Succeed
,Failure
,Terminated
(job run),Cancelled
(rollout)).
clouddeploy-approvals
- When Cloud Deploy needs an approval (or rejection) of a rollout.
- When a rollout has been approved or rejected.
clouddeploy-advances
- When a Cloud Deploy rollout has been advanced from one phase to the next.
- When a rollout is ready to be advanced.
You can use a push or pull model for your Pub/Sub subscriptions.
Receive Cloud Deploy service notifications
To receive Cloud Deploy service notifications:
Enable the Cloud Deploy API:
The Cloud Deploy Service Agent service account is automatically added to your project when you first call the Cloud Deploy API. This service account enables you to receive Cloud Deploy service notifications using Pub/Sub.
The service account name has the following format, where project-number is your project number:
service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
If you still don't see the Cloud Deploy Service Agent service account on your IAM page, or you can't receive Pub/Sub notifications, add this service account to your project:
Open the IAM page in the Google Cloud console:
Click Add.
Add the following principal, where project-number is your project number:
service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
Select Service Management > Cloud Deploy Service Agent as your role.
Click Save.
Enable the Pub/Sub API:
Create the Pub/Sub topic or topics, based on which notification types you want to receive:
gcloud pubsub topics create clouddeploy-resources gcloud pubsub topics create clouddeploy-operations gcloud pubsub topics create clouddeploy-approvals gcloud pubsub topics create clouddeploy-advances
To learn more about managing Pub/Sub topics, see Managing topics and subscriptions.
Subscribe to Cloud Deploy service notifications
You have several of options for subscribing to notifications. For example, you can push messages to an endpoint, or write a Python app for polling your subscription.
To learn how to set up Pub/Sub subscriptions for Cloud Deploy service notifications, read the Pub/Sub Subscriber Guide. You can also learn about Pub/Sub Client Libraries, which make developing subscriber applications easier.
Field values
This section lists possible values for fields in the Cloud Deploy Pub/Sub messages.
For Action
In these notifications, the possible values for Action
are as follows.
For resources
Create
Update
Delete
For operations:
Start
Succeed
Failure
Terminated
Cancelled
For approvals:
Required
Approved
Rejected
For advances:
Required
Advanced
For ResourceType
And the possible values for ResourceType
are as follows:
DeliveryPipeline
Target
Release
Rollout
JobRun
Sample messages
The following examples show several types of Pub/Sub messages from Cloud Deploy topics.
Delivery pipeline create
The following is an example of a Pub/Sub message published to
clouddeploy-resources
in response to creation of a new deliveryPipeline
:
{
"ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQBQgUBXx9cEFMdVhddmhRDRlyfWByY11AAgVMVnldURsHaE5tdR_Wg6LHS0NVaF4TBgpGVX5fXx0IYVtedi_m7r_2wPXOXkAvOYXL6Mtpe735h9xvZiM9XxJLLD5-IzRFQV5AEkwoAURJUytDCypYEU4EISE-MD5FUw",
"message": {
"attributes": {
"Action": "Create",
"Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest",
"ResourceType": "DeliveryPipeline",
"Location": "us-central1",
"DeliveryPipelineId": "etest",
"ProjectNumber": "120123456789",
},
"messageId": "2407836004659723",
"publishTime": "2021-05-17T21:24:48.204Z"
}
}
Render start
The following is an example of a Pub/Sub message published to
clouddeploy-operations
to notify that a release has been rendered:
{
"ackId": "U0RQBhYsXUZIUTcZCGhRDk9eIz81IChFFwYIFAV8fXBBTHVeXHRoUQ0Zcn1gcmNfR1MLFlN5WFEaB2hObXUfioKix0tDVWheEwYKRVZ3W1kdBGFVXH0v_qD5rMP1zl5AKDnZyujLaXudkqxfZiM9XxJLLD5-PTNFQV5AEkw2BkRJUytDCypYEU4EISE-MD5F",
"message": {
"attributes": {
"Action": "Start",
"Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2",
"ResourceType": "Release"
"Location": "us-central1",
"DeliveryPipelineId": "etest",
"ProjectNumber": "120123456789",
"ReleaseId": "f2",
},
"messageId": "2407805942699908",
"publishTime": "2021-05-17T21:28:04.201Z"
}
}
Approval required
The following is an example of a Pub/Sub message published to
clouddeploy-approvals
to notify that a rollout requires approval:
{
"ackId": "RVNEUAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRILUxNRXHQBWhBpWF8aB1ENGXJ8ZnxtCRBVU0FWf1VbEQ16bVxti6C2rERfQXduWhQJBkBXd11aHQhoXF9dotnkpeTv2kFwYSuN8_7mSH_Mo6AYZiA9XBJLLD5-IzZFQV5AEkwoA0RJUytDCypYEU4EISE-MD4",
"message": {
"attributes": {
"Action": "Required",
"Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123"
"ReleaseId": "f2",
"RolloutId": "rollout-123",
"TargetId": "prod",
"Location": "us-central1",
"ProjectNumber": "120123456789",
},
"messageId": "2407845492165003",
"publishTime": "2021-05-17T21:31:25.143Z"
}
}
Rollout advance
The following is an example of a Pub/Sub message published to
clouddeploy-advances
to notify that a rollout has been advanced from one phase
to the next:
{
"ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAwVPAihdeTFXKkFZdWhRDRlyfWB9bV4UUFZMV38OURoHaE5tdR_z4ILjS0NVbVkQBApEUHldXhkEa1RcfC-a0fmv1OzMV0AvOaCoyO9pe77r3NluZiM9XhJLLD5-Jz1FQV5AEkwsCERJUytDCypYEU4EISE-MD5FUw",
"message": {
"attributes": {
"Action": "Advanced",
"Location": "us-central1",
"PhaseId": "stable",
"ProjectNumber": "120123456789",
"ReleaseId": "rollout-123",
"Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123",
"RolloutId": "rollout-123",
"TargetId": "prod"
},
"messageId": "7335813725293809",
"publishTime": "2023-04-03T15:16:30.425Z"
}
}
In this message, PhaseId
identifies the phase that the rollout has been
advanced to.