shared-actions/publish-static-contents
2026-04-30 14:02:09 +02:00
..
action.yml feat: add publish-static-contents action 2026-04-30 14:02:09 +02:00
README.md feat: add publish-static-contents action 2026-04-30 14:02:09 +02:00

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_prefix is set, all assets are synced with Cache-Control: public, max-age=31536000, immutable.
  • index.html is always synced separately with Cache-Control: no-cache, max-age=300 so 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_ids is empty.