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
|
nix flake update --commit-lock-file
|
||||||
- name: Check flake.lock
|
- name: Check flake.lock
|
||||||
uses: DeterminateSystems/flake-checker-action@main
|
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
|
- name: Cache git checkouts
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/nix/gitv3
|
path: ~/.cache/nix/gitv3
|
||||||
key: nix-gitv3-cache-${{ hashFiles('flake.lock') }}
|
key: nix-gitv3-cache-${{ steps.cache-keys.outputs.key }}
|
||||||
restore-keys: nix-gitv3-cache-
|
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
|
- name: nix flake check
|
||||||
run: nix flake check -L --show-trace
|
run: nix flake check -L --show-trace
|
||||||
- name: Build packages for Cachix
|
- name: Build packages for Cachix
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue