From 362e66f58819a78d33f4f7b747a1b7745eaa10ba Mon Sep 17 00:00:00 2001 From: Fabiana Campanari Date: Sun, 3 Mar 2024 02:13:17 -0300 Subject: [PATCH] update actions/cache action to v4.0.1 Signed-off-by: Fabiana Campanari --- .../calculate-prefetch-matrix/action.yml | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/actions/calculate-prefetch-matrix/action.yml diff --git a/.github/actions/calculate-prefetch-matrix/action.yml b/.github/actions/calculate-prefetch-matrix/action.yml new file mode 100644 index 0000000..b58c635 --- /dev/null +++ b/.github/actions/calculate-prefetch-matrix/action.yml @@ -0,0 +1,69 @@ +# This is the composite action: +# https://docs.github.com/en/actions/creating-actions/creating-a-composite-action +# +# Composite actions have some limitations: +# - many contexts are unavailable, e.g. `runner` +# - `env` can be specified per-step only +# - if `run` is used, `shell` must be explicitly specified +name: 'Calculate matrix for `node_modules` prefetch' +inputs: + repo: + description: 'Repository name' + required: true + token: + description: 'GitHub token' + required: true + node-version: + description: 'Node version' + required: true +outputs: + matrix: + description: 'Matrix of OSes to prefetch `node_modules` for' + value: ${{ steps.os-matrix-prefetch.outputs.os-matrix-prefetch }} +runs: + using: 'composite' + steps: + - name: Calculate cache keys + id: cache-keys + env: + HASH: ${{ hashFiles('pnpm-lock.yaml') }} + shell: bash + run: | + echo 'MACOS_KEY=node_modules-macOS-${{ inputs.node-version }}-${{ env.HASH }}' >> "$GITHUB_ENV" + echo 'WINDOWS_KEY=node_modules-Windows-${{ inputs.node-version }}-${{ env.HASH }}' >> "$GITHUB_ENV" + + - name: Check cache miss for MacOS + id: macos-cache + uses: actions/cache/restore@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 + with: + path: node_modules + key: ${{ env.MACOS_KEY }} + lookup-only: true + enableCrossOsArchive: true + + - name: Check cache miss for Windows + id: windows-cache + uses: actions/cache/restore@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 + with: + path: node_modules + key: ${{ env.WINDOWS_KEY }} + lookup-only: true + enableCrossOsArchive: true + + - name: Dispatch `node_modules` prefetch for MacOS and Windows + id: os-matrix-prefetch + env: + MACOS_MISS: ${{ steps.macos-cache.outputs.cache-hit != 'true' && 'true' || '' }} + WINDOWS_MISS: ${{ steps.windows-cache.outputs.cache-hit != 'true' && 'true' || '' }} + PREFETCH_MAC_ONLY: '["macos-latest"]' + PREFETCH_WINDOWS_ONLY: '["windows-latest"]' + PREFETCH_BOTH: '["macos-latest", "windows-latest"]' + PREFETCH_FALLBACK: '["ubuntu-latest"]' + shell: bash + run: | + echo 'os-matrix-prefetch=${{ + (env.OS_MATRIX_IS_FULL && env.WINDOWS_MISS && env.MACOS_MISS && env.PREFETCH_BOTH) || + (env.OS_MATRIX_IS_FULL && env.MACOS_MISS && env.PREFETCH_MAC_ONLY) || + (env.OS_MATRIX_IS_FULL && env.WINDOWS_MISS && env.PREFETCH_WINDOWS_ONLY) || + env.PREFETCH_FALLBACK + }}' >> "$GITHUB_OUTPUT"