ci: Add locked-in tool; fix violations #3655
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: EVM CI | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - 'v*\+evm' | |
| env: | |
| FOUNDRY_PROFILE: ci | |
| # Cancel in-progress runs on new commits to same PR/branch | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: {} | |
| defaults: | |
| run: | |
| working-directory: ./evm | |
| jobs: | |
| # Ensure contract version constants stay in sync and are bumped after release | |
| check-version: | |
| name: Check version | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - run: | | |
| if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then | |
| ./scripts/check-version --tag "${GITHUB_REF_NAME}" | |
| else | |
| # If this exact commit is already tagged as an EVM release, verify the | |
| # tag matches. Otherwise, require a version bump only when src/ changed. | |
| head_evm_tag="$(git tag --points-at HEAD --list 'v*+evm' | head -n1)" | |
| if [[ -n "${head_evm_tag}" ]]; then | |
| ./scripts/check-version --tag "${head_evm_tag}" | |
| elif git diff --quiet "origin/${GITHUB_BASE_REF:-main}...HEAD" -- src/; then | |
| echo "No EVM source changes; skipping version-bump requirement" | |
| ./scripts/check-version | |
| else | |
| ./scripts/check-version --require-newer-than-latest-tag | |
| fi | |
| fi | |
| # Fast lint check - no build needed, runs in parallel with other jobs | |
| lint: | |
| name: forge fmt | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Install Foundry | |
| uses: foundry-rs/foundry-toolchain@c7450ba673e133f5ee30098b3b54f444d3a2ca2d # v1.8.0 | |
| with: | |
| version: v1.5.0 | |
| - name: Run Forge fmt | |
| run: make lint | |
| working-directory: ./evm | |
| # Build and test | |
| test: | |
| name: forge test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - name: Install Foundry | |
| uses: foundry-rs/foundry-toolchain@c7450ba673e133f5ee30098b3b54f444d3a2ca2d # v1.8.0 | |
| with: | |
| version: v1.5.0 | |
| - name: Run Forge build | |
| run: make push0-test | |
| - name: Run Forge tests | |
| run: make forge-test | |
| - name: Run size test | |
| run: make size-test | |
| - name: Build with via-ir for cache | |
| run: forge build --via-ir | |
| - name: Save forge build cache | |
| uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: | | |
| evm/out | |
| evm/cache | |
| key: forge-via-ir-${{ hashFiles('evm/src/**/*.sol', 'evm/script/**/*.sol', 'evm/foundry.toml') }} | |
| echidna: | |
| name: echidna | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - name: Install Foundry | |
| uses: foundry-rs/foundry-toolchain@c7450ba673e133f5ee30098b3b54f444d3a2ca2d # v1.8.0 | |
| with: | |
| version: v1.5.0 | |
| - name: Run Forge build | |
| run: make build | |
| working-directory: evm | |
| - name: Run Echidna | |
| uses: crytic/echidna-action@f7e374e42bf7131f7307a92f5549ed6b2fd17c9d # v2 | |
| with: | |
| files: ./evm/echidna | |
| config: evm/echidna.yaml | |
| echidna-version: v2.3.0 |