Skip to content

feat(publish): add multi-destination S3 support with cache-control and sync-delete#320

Open
loispostula wants to merge 1 commit intomainfrom
push-wxlyzrutuvzs
Open

feat(publish): add multi-destination S3 support with cache-control and sync-delete#320
loispostula wants to merge 1 commit intomainfrom
push-wxlyzrutuvzs

Conversation

@loispostula
Copy link
Copy Markdown
Member

Support publishing build output to multiple S3 buckets/environments from a single build. Each destination can have its own bucket, prefix, CloudFront distribution, and AWS credentials (via credentials_env_prefix).

Backward-compatible: existing single-destination configs work unchanged via resolved_destinations() which synthesizes a "default" destination from legacy top-level fields.

Also adds:

  • Cache-Control headers: .html files get must-revalidate, all others get 1-year immutable (standard SPA pattern)
  • sync_delete option: removes stale S3 objects not in the current upload (requires bucket_prefix to prevent accidental full-bucket wipe)

…d sync-delete

Support publishing build output to multiple S3 buckets/environments from
a single build. Each destination can have its own bucket, prefix,
CloudFront distribution, and AWS credentials (via credentials_env_prefix).

Backward-compatible: existing single-destination configs work unchanged
via resolved_destinations() which synthesizes a "default" destination
from legacy top-level fields.

Also adds:
- Cache-Control headers: .html files get must-revalidate, all others
  get 1-year immutable (standard SPA pattern)
- sync_delete option: removes stale S3 objects not in the current upload
  (requires bucket_prefix to prevent accidental full-bucket wipe)
@fslabs-bot
Copy link
Copy Markdown

fslabs-bot bot commented Apr 3, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign cutlerjake for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@fslabs-bot fslabs-bot bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Apr 3, 2026
@loispostula
Copy link
Copy Markdown
Member Author

/retest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant