| .. | ||
| action.yml | ||
| README.md | ||
publish-static-contents
Syncs frontend assets to S3 and invalidates a CloudFront distribution. Optionally manages versioned static builds by cleaning up old versions.
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
dist_dir |
No | frontend/dist |
Path to the frontend dist directory |
s3_bucket_name |
Yes | — | Name of the S3 bucket to sync assets to |
cloudfront_distribution_ids |
No | '' |
Space-separated list of CloudFront distribution IDs to invalidate |
versioned_static_prefix |
No | '' |
S3 prefix under which versioned builds are stored (e.g. _static). When set, old versions older than 7 days are deleted, keeping at least the 2 newest |
Usage
- uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/publish-static-contents@publish-static-contents-v1
with:
s3_bucket_name: my-bucket
cloudfront_distribution_ids: ${{ vars.CLOUDFRONT_DISTRIBUTION_ID }}
With versioned static assets:
- uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/publish-static-contents@publish-static-contents-v1
with:
dist_dir: frontend/dist
s3_bucket_name: my-bucket
cloudfront_distribution_ids: ${{ vars.CLOUDFRONT_DISTRIBUTION_ID }}
versioned_static_prefix: _static
Notes
- When
versioned_static_prefixis set, all assets are synced withCache-Control: public, max-age=31536000, immutable. index.htmlis always synced separately withCache-Control: no-cache, max-age=300so browsers pick up new deployments quickly.- Old versioned builds are pruned: any version folder older than 7 days is deleted, with at least the 2 newest versions always retained.
- CloudFront invalidation is skipped when
cloudfront_distribution_idsis empty.