123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- name: checks
- on:
- push:
- branches:
- - master
- - next-v*
- - release-v*
- pull_request: {}
- workflow_dispatch: {}
- concurrency:
- group: checks-${{ github.ref }}
- cancel-in-progress: true
- env:
- NODE_OPTIONS: --max_old_space_size=8192
- jobs:
- lint:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Set up environment
- uses: ./.github/actions/setup
- - run: npm run lint
- tests:
- runs-on: ubuntu-latest
- env:
- FORCE_COLOR: 1
- # Needed for "eth-gas-reporter" to produce a "gasReporterOutput.json" as documented in
- # https://github.com/cgewecke/eth-gas-reporter/blob/v0.2.27/docs/gasReporterOutput.md
- CI: true
- GAS: true
- steps:
- - uses: actions/checkout@v4
- - name: Set up environment
- uses: ./.github/actions/setup
- - name: Run tests and generate gas report
- run: npm run test
- - name: Check linearisation of the inheritance graph
- run: npm run test:inheritance
- - name: Check pragma consistency between files
- run: npm run test:pragma
- - name: Check proceduraly generated contracts are up-to-date
- run: npm run test:generation
- - name: Compare gas costs
- uses: ./.github/actions/gas-compare
- with:
- token: ${{ github.token }}
- tests-upgradeable:
- runs-on: ubuntu-latest
- env:
- FORCE_COLOR: 1
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0 # Include history so patch conflicts are resolved automatically
- - name: Set up environment
- uses: ./.github/actions/setup
- - name: Copy non-upgradeable contracts as dependency
- run: |
- mkdir -p lib/openzeppelin-contracts
- cp -rnT contracts lib/openzeppelin-contracts/contracts
- - name: Transpile to upgradeable
- run: bash scripts/upgradeable/transpile.sh
- - name: Run tests
- run: npm run test
- - name: Check linearisation of the inheritance graph
- run: npm run test:inheritance
- - name: Check pragma consistency between files
- run: npm run test:pragma
- - name: Check storage layout
- uses: ./.github/actions/storage-layout
- continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'breaking change') }}
- with:
- token: ${{ github.token }}
- tests-foundry:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- submodules: recursive
- - name: Set up environment
- uses: ./.github/actions/setup
- - name: Run tests
- run: forge test -vv
- coverage:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Set up environment
- uses: ./.github/actions/setup
- - name: Run coverage
- run: npm run coverage
- - uses: codecov/codecov-action@v5
- env:
- CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- harnesses:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Set up environment
- uses: ./.github/actions/setup
- - name: Compile harnesses
- run: |
- make -C certora apply
- npm run compile:harnesses
- slither:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Set up environment
- uses: ./.github/actions/setup
- - uses: crytic/slither-action@v0.4.0
- codespell:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Run CodeSpell
- uses: codespell-project/actions-codespell@v2.1
- with:
- check_hidden: true
- check_filenames: true
- skip: package-lock.json,*.pdf,vendor
|