name: lint on: pull_request: merge_group: push: branches: [main] env: CARGO_TERM_COLOR: always jobs: clippy-binaries: name: clippy / ${{ matrix.network }} runs-on: ubuntu-latest timeout-minutes: 30 strategy: matrix: include: - binary: reth network: ethereum - binary: op-reth network: optimism steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@clippy - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - run: cargo clippy --bin "${{ matrix.binary }}" --workspace --features "${{ matrix.network }} asm-keccak jemalloc jemalloc-prof min-error-logs min-warn-logs min-info-logs min-debug-logs min-trace-logs" env: RUSTFLAGS: -D warnings clippy: name: clippy runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@clippy - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - run: cargo clippy --workspace --lib --examples --tests --benches --all-features --locked env: RUSTFLAGS: -D warnings wasm: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: target: wasm32-wasip1 - uses: taiki-e/install-action@cargo-hack - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - uses: dcarbone/install-jq-action@v2 - name: Run Wasm checks run: .github/assets/check_wasm.sh crate-checks: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: taiki-e/install-action@cargo-hack - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - run: cargo hack check msrv: name: MSRV / ${{ matrix.network }} runs-on: ubuntu-latest timeout-minutes: 30 strategy: matrix: include: - binary: reth network: ethereum - binary: op-reth network: optimism steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: "1.80" # MSRV - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - run: cargo build --bin "${{ matrix.binary }}" --workspace --features "${{ matrix.network }}" env: RUSTFLAGS: -D warnings docs: name: docs runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@nightly - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - run: cargo docs --document-private-items env: # Keep in sync with ./book.yml:jobs.build # This should only add `-D warnings` RUSTDOCFLAGS: --cfg docsrs --show-type-layout --generate-link-to-definition --enable-index-page -Zunstable-options -D warnings fmt: name: fmt runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@nightly with: components: rustfmt - run: cargo fmt --all --check book: name: book runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: "1.80" # MSRV - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - run: cargo build --bin reth --workspace --features ethereum env: RUSTFLAGS: -D warnings - run: ./book/cli/update.sh target/debug/reth - name: Check book changes run: git diff --exit-code codespell: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: codespell-project/actions-codespell@v2 with: skip: "*.json" grafana: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - name: Check dashboard JSON with jq uses: sergeysova/jq-action@v2 with: cmd: jq empty etc/grafana/dashboards/overview.json no-test-deps: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: Ensure no arbitrary or proptest dependency on default build run: cargo tree --package reth -e=features,no-dev | grep -Eq "arbitrary|proptest" && exit 1 || exit 0 # Checks that selected rates can compile with power set of features features: name: features runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@clippy - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: cargo install cargo-hack uses: taiki-e/install-action@cargo-hack - run: make check-features env: RUSTFLAGS: -D warnings lint-success: name: lint success runs-on: ubuntu-latest if: always() needs: - clippy-binaries - clippy - wasm - crate-checks - docs - fmt - book - codespell - grafana - no-test-deps - features timeout-minutes: 30 steps: - name: Decide whether the needed jobs succeeded or failed uses: re-actors/alls-green@release/v1 with: jobs: ${{ toJSON(needs) }}