name: Restore Repository Cache description: Restore the Bazel repository cache from our github action cache inputs: bazel-cache: required: true description: A unique path for the Bazel cache. type: string # By design, these actions will restore the latest cache for this branch/os, # and only save a new version if something has changed. Initially this will # cause a lot of churn, since each test has a slightly different set of # repositories to download. Over time though, since we don't upload no-op # changes, this should converge to a stable set of 3 caches per branch. Every # run will update the current cache with a new test's repositories, until there # are no unique ones left. # # This saves asymptotic space, since each one of these can get up to ~500 MB # and Github prunes the cache after 10 GB. runs: using: 'composite' steps: - name: Setup Bazel repository cache variables shell: bash run: | REPOSITORY_CACHE_BASE=repository-cache-${{ github.base_ref || github.ref_name }}-${{ runner.os }} echo "REPOSITORY_CACHE_BASE=$REPOSITORY_CACHE_BASE" >> $GITHUB_ENV echo "REPOSITORY_CACHE_NAME=$REPOSITORY_CACHE_BASE-${{ inputs.bazel-cache}}-${{ github.sha }}" >> $GITHUB_ENV echo "REPOSITORY_CACHE_PATH=.repository-cache" >> $GITHUB_ENV - name: Restore Bazel repository cache id: restore-cache uses: actions/cache/restore@627f0f41f6904a5b1efbaed9f96d9eb58e92e920 # v3.2.4 with: path: ${{ github.workspace }}/${{ env.REPOSITORY_CACHE_PATH }} key: ${{ env.REPOSITORY_CACHE_NAME }} restore-keys: ${{ env.REPOSITORY_CACHE_BASE }} - name: Initialize BAZEL environment variable if: ${{ steps.restore-cache.cache-hit }} shell: bash run: echo "REPOSITORY_CACHE_HASH=${{ hashFiles(format('{0}/**', env.REPOSITORY_CACHE_PATH)) }}" >> $GITHUB_ENV