Skip to content

Speedup CI with cache #109

Speedup CI with cache

Speedup CI with cache #109

Workflow file for this run

name: Build
on:
push:
branches: [master]
tags: ['*']
pull_request:
types: [opened, reopened, synchronize]
workflow_dispatch:
env:
cwd: ${{github.workspace}}
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}-build
cancel-in-progress: true
jobs:
checkout-submodules:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: create-cache-key
run: echo "submodule-cache-key=$(git submodule)" >> $GITHUB_OUTPUT
shell: bash
- uses: actions/cache/restore@v4
id: submodules-cache-restore
with:
key: submodule-${{ steps.create-cache-key.outputs.submodule-cache-key }}
path: ${{github.workspace}}/packages/ethereum-tests
- if: steps.submodules-cache-restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
id: submodule-cache-save
with:
path: ${{github.workspace}}/packages/ethereum-tests
key: submodule-${{ steps.create-cache-key.outputs.submodule-cache-key}}
outputs:
submodule-cache-key: submodule-${{ steps.create-cache-key.outputs.submodule-cache-key}}
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
id: dep-cache
with:
path: ${{github.workspace}}/node_modules
key: npm-${{ hashFiles('package-lock.json') }}
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
working-directory: ${{github.workspace}}
- name: Cache dependencies
uses: actions/cache/save@v4
with:
path: ${{github.workspace}}
key: npm-${{ hashFiles('package-lock.json') }}
- name: Cache build
uses: actions/cache/save@v4
with:
path: ${{github.workspace}}
key: npm-${{ hashFiles('package-lock.json') }}-${{ github.run_id }}
outputs:
dep-cache-key: ${{ steps.dep-cache.outputs.cache-primary-key }}-${{ github.run_id }}
block:
needs: [build, checkout-submodules]
uses: ./.github/workflows/block-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
submodule-cache-key: ${{ needs.checkout-submodules.outputs.submodule-cache-key }}
blockchain:
needs: build
uses: ./.github/workflows/blockchain-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
browser:
needs: [build, checkout-submodules]
uses: ./.github/workflows/browser.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
submodule-cache-key: ${{ needs.checkout-submodules.outputs.submodule-cache-key }}
client:
needs: build
uses: ./.github/workflows/client-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
common:
needs: build
uses: ./.github/workflows/common-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
devp2p:
needs: build
uses: ./.github/workflows/devp2p-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
ethash:
needs: build
uses: ./.github/workflows/ethash-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
evm:
needs: [build, checkout-submodules]
uses: ./.github/workflows/evm-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
submodule-cache-key: ${{ needs.checkout-submodules.outputs.submodule-cache-key }}
examples:
needs: build
uses: ./.github/workflows/examples.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
genesis:
needs: build
uses: ./.github/workflows/genesis-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
rlp:
needs: build
uses: ./.github/workflows/rlp-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
statemanager:
needs: build
uses: ./.github/workflows/statemanager-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
trie:
needs: build
uses: ./.github/workflows/trie-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
tx:
needs: [build, checkout-submodules]
uses: ./.github/workflows/tx-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
submodule-cache-key: ${{ needs.checkout-submodules.outputs.submodule-cache-key }}
util:
needs: build
uses: ./.github/workflows/util-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
verkle:
needs: build
uses: ./.github/workflows/verkle-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
vm-build:
needs: [build, checkout-submodules]
uses: ./.github/workflows/vm-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
submodule-cache-key: ${{ needs.checkout-submodules.outputs.submodule-cache-key }}
vm-pr:
needs: [build, checkout-submodules]
uses: ./.github/workflows/vm-pr.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
submodule-cache-key: ${{ needs.checkout-submodules.outputs.submodule-cache-key }}
wallet:
needs: build
uses: ./.github/workflows/wallet-build.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}
lint:
needs: build
uses: ./.github/workflows/lint.yml
with:
dep-cache-key: ${{ needs.build.outputs.dep-cache-key }}