Rework CI caching, adding tarball cache
Using the lockfile hash as cache key did not make much sense, since changes to Unstraightened itself change what we fetch. And a static restore key means we never flush our cache: that might be ok if cache size was reasonable, but it is not (over 3 GiB). Switch to using the date as cache key, and only restore caches from the current month. Add tarballs as a second cache. I considered caching all of ~/.cache/nix, but do not want to find out the hard way any (new) caches are not portable if I add CI for other platforms. The tarball-cache seems to be another git tree, so it should be ok.
This commit is contained in:
parent
2af26fcfa1
commit
0e996d2ccb
1 changed files with 16 additions and 2 deletions
18
.github/workflows/ci.yml
vendored
18
.github/workflows/ci.yml
vendored
|
|
@ -56,12 +56,26 @@ jobs:
|
|||
nix flake update --commit-lock-file
|
||||
- name: Check flake.lock
|
||||
uses: DeterminateSystems/flake-checker-action@main
|
||||
# Update the caches daily, flush the cache monthly.
|
||||
- name: Set cache keys
|
||||
id: cache-keys
|
||||
run: |
|
||||
{
|
||||
echo "key=$(date +'%Y-%m-%d')"
|
||||
echo "restore=$(date +'%Y-%m-')"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
- name: Cache git checkouts
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/nix/gitv3
|
||||
key: nix-gitv3-cache-${{ hashFiles('flake.lock') }}
|
||||
restore-keys: nix-gitv3-cache-
|
||||
key: nix-gitv3-cache-${{ steps.cache-keys.outputs.key }}
|
||||
restore-keys: nix-gitv3-cache-${{ steps.cache-keys.outputs.restore }}
|
||||
- name: Cache tarballs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/nix/tarball-cache
|
||||
key: nix-tarball-cache-${{ steps.cache-keys.outputs.key }}
|
||||
restore-keys: nix-tarball-cache-${{ steps.cache-keys.outputs.restore }}
|
||||
- name: nix flake check
|
||||
run: nix flake check -L --show-trace
|
||||
- name: Build packages for Cachix
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue