2d57ace5e434800a80302551bc45ba4b26d662a9
Cache Action
A Gitea Action that caches build files as tar.xz archives on the runner filesystem. Simple, fast, no external dependencies.
Inputs
| Input | Description | Required | Default |
|---|---|---|---|
path |
Single directory to cache | No | ~/.cache/ |
key-prefix |
Prefix for the cache key | Yes | — |
key-file |
File to hash (SHA-256) for the cache key | Yes | — |
Outputs
| Output | Description |
|---|---|
cache-hit |
true if exact key match found, false otherwise |
How It Works
- Hashes
key-filewith SHA-256, combines withkey-prefixas<prefix>-<hash> - Stores archives at
~/.cache/.cache-store/<key>.tar.xz - Restores by extracting the archive to
/, saves by creating one
Usage
This action must be used twice in your workflow:
- Before build — restores cache if it exists
- After build — saves the cache archive (only on cache miss)
Rust Example
name: Rust Build
on: push
defaults:
run:
shell: bash
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# 1. Restore cache before build
- uses: Actions/Cache@main
id: cache
with:
key-prefix: 'cargo-registry'
key-file: 'Cargo.lock'
path: '~/.cargo/registry'
- name: Build
run: cargo build --release
# 2. Save cache after build
- uses: Actions/Cache@main
with:
key-prefix: 'cargo-registry'
key-file: 'Cargo.lock'
path: '~/.cargo/registry'
Skip Steps on Cache Hit
name: Build with Conditional Steps
on: push
defaults:
run:
shell: bash
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# 1. Restore cache
- uses: Actions/Cache@main
id: cache
with:
key-prefix: 'rust'
key-file: 'Cargo.lock'
path: '~/.cargo/registry'
- name: Fetch dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: cargo fetch
- name: Build
run: cargo build --release
# 2. Save cache
- uses: Actions/Cache@main
with:
key-prefix: 'rust'
key-file: 'Cargo.lock'
path: '~/.cargo/registry'
Description