feat: add deploy.after hook for post-deployment actions#6344
Open
smorimoto wants to merge 2 commits intoanomalyco:devfrom
Open
feat: add deploy.after hook for post-deployment actions#6344smorimoto wants to merge 2 commits intoanomalyco:devfrom
smorimoto wants to merge 2 commits intoanomalyco:devfrom
Conversation
Add support for a `hooks.deploy.after` configuration in sst.config.ts that runs after deployment completes. This enables users to send notifications, trigger follow-up actions, or log deployment results. Features: - Hook receives DeployResult with success status, errors, outputs, and app info - Configurable timeout via SST_HOOK_TIMEOUT env var (default 30s) - Proper handling of cancellation and timeout with distinct error messages - Hook errors are logged but don't fail the deployment - UI displays hook start, completion, and error events The hook only runs after `sst deploy`, not during `sst dev` or `sst diff`.
|
A deploy hook would be a great improvement! Maybe the configuration option to setup the hook should be mentioned in the documentation: https://sst.dev/docs/reference/config Source: https://github.com/anomalyco/sst/blob/dev/platform/src/config.ts |
Contributor
Author
|
The documentation should probably be generated from the JSDoc of that file! |
Collaborator
|
thanks for your contribution @smorimoto this is a great change, probably it could replace #6177 as a more elegant solution. a couple of thoughts:
|
Previously, hook errors were only logged and the deployment was considered successful. Now hook errors will cause the deployment to fail, giving users proper feedback when their post-deployment logic fails. Users who want to handle errors gracefully can wrap their hook logic in a try-catch block to prevent deployment failure.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add a
deploy.afterhook that runs aftersst deploycompletes. This is useful for:Changes
hooks.go: Core hook execution logic with timeout support (default 30s, configurable viaSST_HOOK_TIMEOUT)DeployResult,DeployError,DeployHooks, andHooksinterfacesconfig.tsHook Result
The
afterhook receives aDeployResultobject containing:success— Whether the deployment completed without errorserrors— Array of errors if any occurredoutputs— The outputs from yourrunfunctionresources— Number of resources in the stackapp.name— The app nameapp.stage— The stage nameExample
Notes
sst deploy, not duringsst devorsst diffTest plan
sst devorsst diffSST_HOOK_TIMEOUT=5and a slow hook