ci: more consistent, platform- and ghc-specific cache keys

These github caches created once and never updated; so it's important
to have keys that are specific enough that it doesn't
(a) waste time restoring cached data that we won't be able to use
(b) fail to cache new data because it thinks the old cache was used.
This commit is contained in:
Simon Michael 2025-06-13 21:00:01 -10:00
parent ccb0033e31
commit ce0cd344b5
6 changed files with 78 additions and 81 deletions

View File

@ -30,26 +30,25 @@ jobs:
run: |
apk --no-cache add gmp-dev gmp-static libffi-dev zlib-dev zlib-static ncurses-dev ncurses-static binutils-gold curl gcc g++ git make xz tar perl
# things to be cached/restored (needs tar)
# CACHES
- name: Cache - ~/.ghcup
id: ghcup
uses: actions/cache@v4
with:
path: ~/.ghcup
key: ${{ runner.os }}-ghcup-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-ghcup-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-ghcup
${{ runner.os }}-x64-ghcup-${{ env.ghc }}
# XXX Warning: Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.
- name: Cache - ~/.cabal
id: cabal
uses: actions/cache@v4
with:
path: ~/.cabal
key: ${{ runner.os }}-cabal-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-cabal-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-cabal
${{ runner.os }}-x64-cabal-${{ env.ghc }}
# actions:

View File

@ -34,67 +34,65 @@ jobs:
run: |
tools/checkembeddedfiles
# caching
# XXX Should some of these have ghc version in the key, as in ci.yml ?
# I think so, otherwise when ghc version changes they'll keep restoring the old data and it won't be used or updated
# CACHES
- name: Cache - stack-installed ~/.local/bin
id: stack-programs
uses: actions/cache@v4
with:
path: ~/.local/bin
key: ${{ runner.os }}-arm64-stack-programs-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-arm64-stack-programs-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-arm64-stack-programs
${{ runner.os }}-arm64-stack-programs-${{ env.ghc }}
- name: Cache - ~/.stack
id: stack-global
uses: actions/cache@v4
with:
path: ~/.stack
key: ${{ runner.os }}-arm64-stack-global-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-arm64-stack-global-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-arm64-stack-global
${{ runner.os }}-arm64-stack-global-${{ env.ghc }}
- name: Cache - ./.stack-work
uses: actions/cache@v4
with:
path: .stack-work
key: ${{ runner.os }}-arm64-stack-work-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-arm64-stack-work-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-arm64-stack-work
${{ runner.os }}-arm64-stack-work-${{ env.ghc }}
- name: Cache - hledger-lib/.stack-work
uses: actions/cache@v4
with:
path: hledger-lib/.stack-work
key: ${{ runner.os }}-arm64-hledger-lib-stack-work-${{ hashFiles('hledger-lib/package.yaml') }}
key: ${{ runner.os }}-arm64-hledger-lib-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-lib/package.yaml') }}
restore-keys: |
${{ runner.os }}-arm64-hledger-lib-stack-work
${{ runner.os }}-arm64-hledger-lib-stack-work-${{ env.ghc }}
- name: Cache - hledger/.stack-work
uses: actions/cache@v4
with:
path: hledger/.stack-work
key: ${{ runner.os }}-arm64-hledger-stack-work-${{ hashFiles('hledger/package.yaml') }}
key: ${{ runner.os }}-arm64-hledger-stack-work-${{ env.ghc }}-${{ hashFiles('hledger/package.yaml') }}
restore-keys: |
${{ runner.os }}-arm64-hledger-stack-work
${{ runner.os }}-arm64-hledger-stack-work-${{ env.ghc }}
- name: Cache - hledger-ui/.stack-work
uses: actions/cache@v4
with:
path: hledger-ui/.stack-work
key: ${{ runner.os }}-arm64-hledger-ui-stack-work-${{ hashFiles('hledger-ui/package.yaml') }}
key: ${{ runner.os }}-arm64-hledger-ui-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-ui/package.yaml') }}
restore-keys: |
${{ runner.os }}-arm64-hledger-ui-stack-work
${{ runner.os }}-arm64-hledger-ui-stack-work-${{ env.ghc }}
- name: Cache - hledger-web/.stack-work
uses: actions/cache@v4
with:
path: hledger-web/.stack-work
key: ${{ runner.os }}-arm64-hledger-web-stack-work-${{ hashFiles('hledger-web/package.yaml') }}
key: ${{ runner.os }}-arm64-hledger-web-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-web/package.yaml') }}
restore-keys: |
${{ runner.os }}-arm64-hledger-web-stack-work
${{ runner.os }}-arm64-hledger-web-stack-work-${{ env.ghc }}
# actions:

View File

@ -34,65 +34,65 @@ jobs:
run: |
tools/checkembeddedfiles
# caching
# CACHES
- name: Cache - stack-installed ~/.local/bin
id: stack-programs
uses: actions/cache@v4
with:
path: ~/.local/bin
key: ${{ runner.os }}-x64-stack-programs-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-programs-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-x64-stack-programs
${{ runner.os }}-x64-stack-programs-${{ env.ghc }}
- name: Cache - ~/.stack
id: stack-global
uses: actions/cache@v4
with:
path: ~/.stack
key: ${{ runner.os }}-x64-stack-global-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-global-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-x64-stack-global
${{ runner.os }}-x64-stack-global-${{ env.ghc }}
- name: Cache - ./.stack-work
uses: actions/cache@v4
with:
path: .stack-work
key: ${{ runner.os }}-x64-stack-work-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-work-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-x64-stack-work
${{ runner.os }}-x64-stack-work-${{ env.ghc }}
- name: Cache - hledger-lib/.stack-work
uses: actions/cache@v4
with:
path: hledger-lib/.stack-work
key: ${{ runner.os }}-x64-hledger-lib-stack-work-${{ hashFiles('hledger-lib/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-lib/package.yaml') }}
restore-keys: |
${{ runner.os }}-x64-hledger-lib-stack-work
${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghc }}
- name: Cache - hledger/.stack-work
uses: actions/cache@v4
with:
path: hledger/.stack-work
key: ${{ runner.os }}-x64-hledger-stack-work-${{ hashFiles('hledger/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-stack-work-${{ env.ghc }}-${{ hashFiles('hledger/package.yaml') }}
restore-keys: |
${{ runner.os }}-x64-hledger-stack-work
${{ runner.os }}-x64-hledger-stack-work-${{ env.ghc }}
- name: Cache - hledger-ui/.stack-work
uses: actions/cache@v4
with:
path: hledger-ui/.stack-work
key: ${{ runner.os }}-x64-hledger-ui-stack-work-${{ hashFiles('hledger-ui/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-ui/package.yaml') }}
restore-keys: |
${{ runner.os }}-x64-hledger-ui-stack-work
${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghc }}
- name: Cache - hledger-web/.stack-work
uses: actions/cache@v4
with:
path: hledger-web/.stack-work
key: ${{ runner.os }}-x64-hledger-web-stack-work-${{ hashFiles('hledger-web/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-web/package.yaml') }}
restore-keys: |
${{ runner.os }}-x64-hledger-web-stack-work
${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghc }}
# actions:

View File

@ -30,7 +30,7 @@ jobs:
with:
fetch-depth: 0
# caching
# CACHES
# Warning: Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.
# - name: Cache - stack programs dir # ghc, ghc-included packages and their haddocks, mingw, msys2
@ -40,58 +40,58 @@ jobs:
# path: C:\Users\runneradmin\AppData\Local\Programs\stack\
# # which files signal a change in stack's global db ?
# # **.yaml includes */package.yaml and stack.yaml* (too many), and hopefully no other changing yamls
# key: ${{ runner.os }}-appdata-local-programs-stack-${{ hashFiles('**.yaml') }}
# key: ${{ runner.os }}-x64-appdata-local-programs-stack-${{ hashFiles('**.yaml') }}
# restore-keys: |
# ${{ runner.os }}-appdata-local-programs-stack
# ${{ runner.os }}-x64-appdata-local-programs-stack
- name: Cache - stack global dir
id: stack-global-package-db
uses: actions/cache@v4
with:
path: C:\Users\runneradmin\AppData\Roaming\stack\
key: ${{ runner.os }}-appdata-roaming-stack-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-appdata-roaming-stack-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-appdata-roaming-stack
${{ runner.os }}-x64-appdata-roaming-stack-${{ env.ghc }}
- name: Cache - ./.stack-work
uses: actions/cache@v4
with:
path: .stack-work
key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-work-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-work
${{ runner.os }}-x64-stack-work-${{ env.ghc }}
- name: Cache - hledger-lib/.stack-work
uses: actions/cache@v4
with:
path: hledger-lib/.stack-work
key: ${{ runner.os }}-hledger-lib-stack-work-${{ hashFiles('hledger-lib/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-lib/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-lib-stack-work
${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghc }}
- name: Cache - hledger/.stack-work
uses: actions/cache@v4
with:
path: hledger/.stack-work
key: ${{ runner.os }}-hledger-stack-work-${{ hashFiles('hledger/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-stack-work-${{ env.ghc }}-${{ hashFiles('hledger/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-stack-work
${{ runner.os }}-x64-hledger-stack-work-${{ env.ghc }}
- name: Cache - hledger-ui/.stack-work
uses: actions/cache@v4
with:
path: hledger-ui/.stack-work
key: ${{ runner.os }}-hledger-ui-stack-work-${{ hashFiles('hledger-ui/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-ui/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-ui-stack-work
${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghc }}
- name: Cache - hledger-web/.stack-work
uses: actions/cache@v4
with:
path: hledger-web/.stack-work
key: ${{ runner.os }}-hledger-web-stack-work-${{ hashFiles('hledger-web/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-web/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-web-stack-work
${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghc }}
# actions

View File

@ -139,9 +139,9 @@ jobs:
# XXX if stack.yaml is a symlink, this fails with
# Error: The template is not valid. .github/workflows/push.yml (Line: 103, Col: 14): hashFiles('**.yaml') failed.
# Fail to hash files under directory '/home/runner/work/hledger/hledger'
key: ${{ runner.os }}-stack-global-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-global-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-global-${{ env.ghc }}
${{ runner.os }}-x64-stack-global-${{ env.ghc }}
if: env.do-all
- name: Cache - stack-installed programs in ~/.local/bin
@ -149,54 +149,54 @@ jobs:
uses: actions/cache@v4
with:
path: ~/.local/bin
key: ${{ runner.os }}-stack-programs-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-programs-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-programs-${{ env.ghc }}
${{ runner.os }}-x64-stack-programs-${{ env.ghc }}
if: env.do-all
- name: Cache - .stack-work
uses: actions/cache@v4
with:
path: .stack-work
key: ${{ runner.os }}-stack-work-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-work-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-stack-work-${{ env.ghc }}
if: env.do-all
- name: Cache - hledger-lib/.stack-work
uses: actions/cache@v4
with:
path: hledger-lib/.stack-work
key: ${{ runner.os }}-hledger-lib-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-lib/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-lib/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-lib-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghc }}
if: env.do-all
- name: Cache - hledger/.stack-work
uses: actions/cache@v4
with:
path: hledger/.stack-work
key: ${{ runner.os }}-hledger-stack-work-${{ env.ghc }}-${{ hashFiles('hledger/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-stack-work-${{ env.ghc }}-${{ hashFiles('hledger/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-hledger-stack-work-${{ env.ghc }}
if: env.do-all
- name: Cache - hledger-ui/.stack-work
uses: actions/cache@v4
with:
path: hledger-ui/.stack-work
key: ${{ runner.os }}-hledger-ui-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-ui/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-ui/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-ui-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghc }}
if: env.do-all
- name: Cache - hledger-web/.stack-work
uses: actions/cache@v4
with:
path: hledger-web/.stack-work
key: ${{ runner.os }}-hledger-web-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-web/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-web/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-web-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghc }}
if: env.do-all
# Ensure the ghc version we need is installed.

View File

@ -39,58 +39,58 @@ jobs:
# XXX if stack.yaml is a symlink, this fails with
# Error: The template is not valid. .github/workflows/push.yml (Line: 103, Col: 14): hashFiles('**.yaml') failed.
# Fail to hash files under directory '/home/runner/work/hledger/hledger'
key: ${{ runner.os }}-stack-global-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-global-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-global-${{ env.ghc }}
${{ runner.os }}-x64-stack-global-${{ env.ghc }}
- name: Cache - stack-installed programs in ~/.local/bin
id: stack-programs
uses: actions/cache@v4
with:
path: ~/.local/bin
key: ${{ runner.os }}-stack-programs-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-programs-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-programs-${{ env.ghc }}
${{ runner.os }}-x64-stack-programs-${{ env.ghc }}
- name: Cache - .stack-work
uses: actions/cache@v4
with:
path: .stack-work
key: ${{ runner.os }}-stack-work-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
key: ${{ runner.os }}-x64-stack-work-${{ env.ghc }}-${{ hashFiles('**.yaml') }}
restore-keys: |
${{ runner.os }}-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-stack-work-${{ env.ghc }}
- name: Cache - hledger-lib/.stack-work
uses: actions/cache@v4
with:
path: hledger-lib/.stack-work
key: ${{ runner.os }}-hledger-lib-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-lib/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-lib/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-lib-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghc }}
- name: Cache - hledger/.stack-work
uses: actions/cache@v4
with:
path: hledger/.stack-work
key: ${{ runner.os }}-hledger-stack-work-${{ env.ghc }}-${{ hashFiles('hledger/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-stack-work-${{ env.ghc }}-${{ hashFiles('hledger/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-hledger-stack-work-${{ env.ghc }}
- name: Cache - hledger-ui/.stack-work
uses: actions/cache@v4
with:
path: hledger-ui/.stack-work
key: ${{ runner.os }}-hledger-ui-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-ui/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-ui/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-ui-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghc }}
- name: Cache - hledger-web/.stack-work
uses: actions/cache@v4
with:
path: hledger-web/.stack-work
key: ${{ runner.os }}-hledger-web-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-web/package.yaml') }}
key: ${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghc }}-${{ hashFiles('hledger-web/package.yaml') }}
restore-keys: |
${{ runner.os }}-hledger-web-stack-work-${{ env.ghc }}
${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghc }}
# ACTIONS