From 7fca71318d0ba00455b440981b878ce366393708 Mon Sep 17 00:00:00 2001 From: forbes Date: Mon, 9 Feb 2026 16:05:22 -0600 Subject: [PATCH] fix(ci): improve ccache persistence across builds Use github.run_id for cache save keys so every build saves its accumulated ccache objects, instead of the previous date-based keys which froze the cache after the first save each day (cache-hit=true prevented re-saving). Restore keys still use branch/main prefixes for warm fallback. Also add ccache-build-main- fallback to release workflow so release builds can bootstrap from the latest main build cache. --- .gitea/workflows/build.yml | 10 +++------- .gitea/workflows/release.yml | 11 ++++------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index f9e239d263..b75bd9bc89 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -68,16 +68,12 @@ jobs: export PATH="$HOME/.pixi/bin:$PATH" pixi --version - - name: Compute cache date key - id: cache-date - run: echo "date=$(date -u +%Y%m%d)" >> $GITHUB_OUTPUT - - name: Restore ccache id: ccache-restore uses: https://git.kindred-systems.com/actions/cache.git/restore@v4 with: path: /tmp/ccache-kindred-create - key: ccache-build-${{ github.ref_name }}-${{ steps.cache-date.outputs.date }} + key: ccache-build-${{ github.ref_name }}-${{ github.run_id }} restore-keys: | ccache-build-${{ github.ref_name }}- ccache-build-main- @@ -98,11 +94,11 @@ jobs: run: pixi run ccache -s - name: Save ccache - if: always() && steps.ccache-restore.outputs.cache-hit != 'true' + if: always() uses: https://git.kindred-systems.com/actions/cache.git/save@v4 with: path: /tmp/ccache-kindred-create - key: ccache-build-${{ github.ref_name }}-${{ steps.cache-date.outputs.date }} + key: ccache-build-${{ github.ref_name }}-${{ github.run_id }} - name: Run C++ unit tests continue-on-error: true diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index cea4cd4c16..d149142ff6 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -78,18 +78,15 @@ jobs: export PATH="$HOME/.pixi/bin:$PATH" pixi --version - - name: Compute cache date key - id: cache-date - run: echo "date=$(date -u +%Y%m%d)" >> $GITHUB_OUTPUT - - name: Restore ccache id: ccache-restore uses: https://git.kindred-systems.com/actions/cache.git/restore@v4 with: path: /tmp/ccache-kindred-create - key: ccache-release-linux-${{ steps.cache-date.outputs.date }} + key: ccache-release-linux-${{ github.run_id }} restore-keys: | ccache-release-linux- + ccache-build-main- - name: Prepare ccache run: | @@ -109,11 +106,11 @@ jobs: run: pixi run ccache -s - name: Save ccache - if: always() && steps.ccache-restore.outputs.cache-hit != 'true' + if: always() uses: https://git.kindred-systems.com/actions/cache.git/save@v4 with: path: /tmp/ccache-kindred-create - key: ccache-release-linux-${{ steps.cache-date.outputs.date }} + key: ccache-release-linux-${{ github.run_id }} - name: Clean up intermediate build files run: |