Skip to content

v0.1.0 – Universal S3 Cache with 1:1 actions/cache Parity & Dual-Caching

Pre-release
Pre-release

Choose a tag to compare

@xSAVIKx xSAVIKx released this 11 Sep 17:45
· 129 commits to main since this release

🚀 Introducing Cloud Cache Action (v0.1.0)

Cloud Cache Action is a drop-in, high-performance GitHub Action for saving and restoring cache artifacts to any S3-compatible cloud or self-hosted object storage with full 1:1 actions/cache parity and native Node 24 execution.


✨ Key Features

  • 1:1 actions/cache Parity: Complete drop-in replacement for official inputs (path, key, restore-keys, fail-on-cache-miss, lookup-only, enableCrossOsArchive, read-only, save-always) and outputs (cache-hit, cache-primary-key, cache-matched-key).
  • Modern Node 24 Runtime: Native runs: using: 'node24' runtime with zero deprecation warnings.
  • Universal S3 Compatibility: Tested and verified across AWS S3, Cloudflare R2, Google Cloud Storage, Backblaze B2, Fastly Object Storage, Garage, SeaweedFS, MinIO, and custom endpoints.
  • ⚡ Dual-Caching Synchronization: Cache simultaneously to both your S3 bucket and GitHub Actions Cache tier for maximum resilience, warm local runners, and rapid remote builds.
  • Resilient Archiving & Transfer: Multi-threaded compression (zstd with automatic gzip fallback), chunked streaming uploads, and exponential backoff retries on transient network errors.
  • Modular Sub-actions: Dedicated restore-only (restore/action.yml) and save-only (save/action.yml) workflows for custom build step placement.

📦 Quick Start

- name: Cache Dependencies (S3)
  uses: xSAVIKx/cloud-cache-action@v0
  with:
    path: ~/.npm
    key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-npm-
    bucket: my-ci-cache-bucket
    aws-region: us-east-1
    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

Dual-Caching Example (S3 + GitHub Actions Cache)

- name: Dual Cache (S3 + GitHub Cache Fallback)
  uses: xSAVIKx/cloud-cache-action@v0
  with:
    path: ~/.npm
    key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
    bucket: my-ci-cache-bucket
    dual-cache: true
    cache-source: dual
    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

Documentation: https://xsavikx.github.io/cloud-cache-action/
Website: https://serhiichuk.dev