From 0584df3946029e572cd48d9a462538f5a178f534 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 22 Jul 2024 13:59:29 -0500 Subject: [PATCH] Prune ccache caches in CI on each run (#457) I noticed in a [recent build] that the cache size for Windows is quite large at 500M. That might be related to switching to MSVC, I'm not sure, but something else I've realized is that as-configured wasi-sdk will continuously grow the cache over time and it won't ever get trimmed until we hit github actions limits. This is because the cache is restored from an older version, then appended to with the current build, then saved again. That theoretically means that each builder could make up to a 5G cache which is a bit too large. This commit adds an extra step that removes all objects older than 1d to ensure that older builds eventually get cleaned out of the cache. GitHub Actions should then still delete older caches pretty regularly but each individual cache should be bounded still. [recent build]: https://github.com/WebAssembly/wasi-sdk/actions/runs/10045872592/job/27764084758?pr=456 --- .github/workflows/main.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d3d542f..0ff1d36 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -152,6 +152,15 @@ jobs: name: ${{ format( 'dist-{0}', matrix.artifact) }} path: build/dist + # Caches are persisted across runs by restoring the latest cache which + # means that quite a lot of cruft can accumulate. Prune older entries that + # haven't been used by this run to avoid the cache continuously getting + # larger. In theory this should use `--evict-older-than $dur` where `$dur` + # is the time since the start of the run, but I'm not sure how to easily + # calculate that so pick something loose like one day instead. + - name: Prune ccache objects + run: ccache --evict-older-than 1d + # Help debug ccache issues by showing what happened. - if: always() name: Show ccache statistics