Write the archive to a .tmp file then rename into place so a concurrent
prune can never delete a half-written archive, and run prune.sh after
every save: keep the 3 newest archives per key-prefix family, expire
anything older than 7 days, hard-cap the store at 2 GB (oldest first,
trumping the keep set), never touch files younger than 1h, and drop
stale run workspaces under ~/.cache/act older than 2 days.
- Store cache as tar.xz archives on runner filesystem at ~/.cache/.cache-store/
- No external API calls, no node.js, no curl needed
- Restore extracts archive if key matches, save creates one on miss
- Drastically simpler and more reliable for self-hosted runners
- Remove actions/cache@v5 dependency, implement cache API calls directly
using curl, tar, and zstd against Gitea's /_apis/artifactcache/ API
- Drop 'key' input, add required 'key-prefix' and 'key-file' inputs
- Cache key is generated as key-prefix-<sha256-of-key-file>
- Update README with revised inputs and Rust-only examples
Convert the composite action from Checkout to Cache that:
- Stores build files under ~/.cache/ by default
- Auto-generates cache keys from lockfile hashes
- Uses actions/cache@v5 for restore and save
- Supports custom path, key, key-file, and restore-keys inputs
- Exposes cache-hit output for conditional workflow steps