pulumi up, pulumi destroy) and each Deployments run becomes one Flashduty change.
A webhook can be attached to an organization (it receives events from every stack in the organization) or to a single stack. Flashduty records the events below; every other event returns success and creates no change:
In Flashduty On-call
- In the Flashduty console, go to Integration Center → Change Events
- Select Pulumi and enter an integration name
- To assign changes to specific channels, add rules under the integration’s Routes that match labels such as
projectorstack - Click Save and copy the generated Push URL
Configure Pulumi Cloud
1
Create a webhook
- Organization webhook: go to Settings → Organization webhooks
- Stack webhook: open the stack, then Settings → Webhooks
2
Enter the Push URL
- Destination: select Webhook (the generic JSON format, not Slack or Microsoft Teams)
- Display name: any name
- Payload URL: paste the complete Flashduty integration Push URL
- Secret: leave empty. Flashduty authenticates with the
integration_keyin the Push URL and does not verifyPulumi-Webhook-Signature
3
Select events
Under Events, choose one of the following, not both (see “What one change is” below):
- To track update results only:
update_succeeded,update_failed,destroy_succeeded,destroy_failed - To use Pulumi Deployments and see queued, running, and finished:
deployment_queued,deployment_started,deployment_succeeded,deployment_failed
What one change is
An update run through Pulumi Deployments sends both a
deployment and a stack_update event. They are different objects and create two changes, so select only one of the two kinds.
Two updates of the same stack are two changes. The update number and the deployment version are per-stack counters and never repeat within a stack.
Status mapping
Stack updates (
result):
Deployments runs (
status):
Pulumi reports an update or deployment you cancel as
failed, so it is recorded as Failed. Done, Failed, and Canceled are end states; Flashduty records the change’s end time. Pulumi’s result and status can also hold not started, requested, or running, which Flashduty records as Ready or Processing; any other value makes the delivery return an error.
Change content
Labels can be used for routing and for filtering the change list:
actor and operation can differ between the notifications of one change, so do not route on them; route on organization, project, and stack.
FAQ
What is the event time? Does a redelivery record a duplicate?
What is the event time? Does a redelivery record a duplicate?
Pulumi’s payloads carry no timestamp, so Flashduty uses the time it receives the notification as the event time. Redelivering a notification from Pulumi Cloud therefore adds one more event to the change, with the same status.Pulumi does not guarantee the order of notifications. If the
running notification of a Deployments run arrives after its succeeded, the change goes back to Processing. This is rare; the delivery log in Pulumi Cloud shows the order. A stack update sends only its final result and is not affected.Why are previews and refreshes not recorded?
Why are previews and refreshes not recorded?
A preview does not change infrastructure, and a refresh only syncs the cloud’s current state back into Pulumi state, so neither is recorded. The same applies to
stack_preview events and to previews, refreshes, and drift detection in Deployments.Does creating the webhook send a test delivery?
Does creating the webhook send a test delivery?
Pulumi’s
ping event returns success and creates no change.Why does a delivery return InvalidParameter?
Why does a delivery return InvalidParameter?
Pulumi-Webhook-Kind header is missing: the request did not come from a Pulumi Cloud webhook, or a proxy removed the headerupdateUrl is missing/deploymentUrl is missing: the payload is incomplete. Make sure the webhook’s Destination is Webhook, not Slack or Microsoft Teamsunsupported result "..."/unsupported status "...": Flashduty received a state it does not support yet. Contact us