From 61d22c2f4c33322a7498aabb066f55adac6f0cf7 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 1 Mar 2023 11:47:32 +0100 Subject: [PATCH] ci: Better error handling when caches can't be restored --- .github/actions/restore-cache/action.yml | 25 +++ .github/workflows/build.yml | 215 +++++++---------------- 2 files changed, 89 insertions(+), 151 deletions(-) create mode 100644 .github/actions/restore-cache/action.yml diff --git a/.github/actions/restore-cache/action.yml b/.github/actions/restore-cache/action.yml new file mode 100644 index 000000000000..14fe63bcf69c --- /dev/null +++ b/.github/actions/restore-cache/action.yml @@ -0,0 +1,25 @@ +name: "Restore dependency & build cache" +description: "Restore the dependency & build cache." + +runs: + using: "composite" + steps: + - name: Check dependency cache + id: dep-cache + uses: actions/cache/restore@v3 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ env.DEPENDENCY_CACHE_KEY }} + + - name: Check build cache + uses: actions/cache/restore@v3 + id: build-cache + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }} + + - name: Check if caches are restored + uses: actions/github-script@v6 + if: steps.dep-cache.outputs.cache-hit != 'true' || steps.build-cache.outputs.cache-hit != 'true' + with: + script: core.setFailed('Dependency or build cache could not be restored - please re-run ALL jobs.') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cae85a6b5725..71e4b3f4a0ac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -192,11 +192,13 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 + - name: Check dependency cache - uses: actions/cache@v3 + uses: actions/cache/restore@v3 with: path: ${{ env.CACHED_DEPENDENCY_PATHS }} key: ${{ needs.job_install_deps.outputs.dependency_cache_key }} + fail-on-cache-miss: true - name: Check build cache uses: actions/cache@v3 @@ -245,16 +247,11 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} + - name: Get SDK version # `jq` reads JSON files, and `tee` pipes its input to the given location and to stdout. (Adding `-a` is the # equivalent of using >> rather than >.) @@ -289,16 +286,10 @@ jobs: # The size limit action runs `yarn` and `yarn build` when this job is executed on # use Node 14 for now. node-version: '14' - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Check bundle sizes uses: getsentry/size-limit-action@runForBranch with: @@ -323,16 +314,10 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Run linter run: yarn lint @@ -348,16 +333,10 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Run madge run: yarn circularDepCheck @@ -374,16 +353,10 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Pack run: yarn build:tarball - name: Archive artifacts @@ -411,16 +384,10 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ env.DEFAULT_NODE_VERSION }} - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Run tests env: NODE_VERSION: 16 @@ -446,16 +413,10 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Run tests env: NODE_VERSION: ${{ matrix.node }} @@ -484,16 +445,10 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Get npm cache directory id: npm-cache-dir run: echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT @@ -558,16 +513,10 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Get npm cache directory id: npm-cache-dir run: echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT @@ -616,16 +565,10 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Run integration tests env: KARMA_BROWSER: ${{ matrix.browser }} @@ -646,16 +589,10 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Run browser build tests run: | cd packages/browser @@ -684,16 +621,10 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Run integration tests env: NODE_VERSION: ${{ matrix.node }} @@ -720,16 +651,10 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Run integration tests env: NODE_VERSION: ${{ matrix.node }} @@ -754,16 +679,10 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Get node version id: versions run: | @@ -817,16 +736,10 @@ jobs: ref: ${{ env.HEAD_COMMIT }} - name: Set up Node uses: volta-cli/action@v4 - - name: Check dependency cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_DEPENDENCY_PATHS }} - key: ${{ needs.job_build.outputs.dependency_cache_key }} - - name: Check build cache - uses: actions/cache/restore@v3 - with: - path: ${{ env.CACHED_BUILD_PATHS }} - key: ${{ env.BUILD_CACHE_KEY }} + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Collect run: yarn ci:collect