diff --git a/.github/actions/load-n8n-docker/action.yml b/.github/actions/load-n8n-docker/action.yml index 688854358e3..5999c9da22d 100644 --- a/.github/actions/load-n8n-docker/action.yml +++ b/.github/actions/load-n8n-docker/action.yml @@ -4,9 +4,14 @@ # # After this action runs, `n8nio/n8n:local` and `n8nio/runners:local` are # present on the runner. +# +# If the cache entry has been evicted (e.g. Blacksmith cache thrash between +# prepare-docker and slow shards), the action falls back to invoking +# build-n8n-docker, which leaves both images tagged in dockerd and re-saves +# the tarball to cache as a side effect. name: 'Load n8n Docker images from cache' -description: 'Restores the zstd-compressed n8n + runners image tarball from the variant+SHA-keyed GHA cache and loads both images into the local docker daemon.' +description: 'Restores the zstd-compressed n8n + runners image tarball from the variant+SHA-keyed GHA cache and loads both images into the local docker daemon. Falls back to rebuilding on cache miss.' inputs: build-variant: @@ -18,12 +23,25 @@ runs: using: 'composite' steps: - name: Restore image tarball from cache + id: restore uses: actions/cache/restore@640a1c2554105b57832a23eea0b4672fc7a790d5 # v4.2.3 with: key: n8n-docker-image-${{ inputs.build-variant }}-${{ github.sha }} path: /tmp/n8n-image.tar.zst - fail-on-cache-miss: true - name: Load n8n and runners images into docker + if: steps.restore.outputs.cache-hit == 'true' shell: bash run: zstd -d -c /tmp/n8n-image.tar.zst | docker load + + - name: Warn on cache miss + if: steps.restore.outputs.cache-hit != 'true' + shell: bash + run: | + echo "::warning::Cache miss for n8n-docker-image-${{ inputs.build-variant }}-${{ github.sha }} (SHA ${{ github.sha }}); falling back to rebuild via build-n8n-docker." + + - name: Rebuild image on cache miss + if: steps.restore.outputs.cache-hit != 'true' + uses: ./.github/actions/build-n8n-docker + with: + build-variant: ${{ inputs.build-variant }}