on: push: branches: - main pull_request: env: RUSTFLAGS: -D warnings CARGO_TERM_COLOR: always GETH_BUILD: 1.10.26-e5eb32ac concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true name: ci jobs: test: # Pin to `20.04` instead of `ubuntu-latest`, until ubuntu-latest migration is complete # See also runs-on: ubuntu-20.04 steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install toolchain uses: dtolnay/rust-toolchain@stable with: components: llvm-tools-preview - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install geth run: | mkdir -p "$HOME/bin" wget -q https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-$GETH_BUILD.tar.gz tar -xvf geth-linux-amd64-$GETH_BUILD.tar.gz mv geth-linux-amd64-$GETH_BUILD/geth $HOME/bin/geth chmod u+x "$HOME/bin/geth" export PATH=$HOME/bin:$PATH echo $HOME/bin >> $GITHUB_PATH geth version - name: Install latest nextest release uses: taiki-e/install-action@nextest - name: Install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: Run tests run: cargo llvm-cov nextest --lcov --output-path lcov.info --locked --workspace --all-features - name: Upload coverage data to codecov uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} files: lcov.info flags: unit-tests eth-blockchain: name: ethereum blockchain tests (stable) runs-on: ubuntu-latest env: RUST_LOG: info,sync=error steps: - name: Checkout sources uses: actions/checkout@v2 - name: Checkout ethereum/tests uses: actions/checkout@v2 with: repository: ethereum/tests path: ethtests submodules: recursive - name: Install toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal override: true - uses: Swatinem/rust-cache@v1 with: cache-on-failure: true - name: Run Ethereum tests run: cargo run --release -- test-chain ethtests/BlockchainTests/GeneralStateTests/ fuzz: # Skip the Fuzzing Jobs until we make them run fast and reliably. Currently they will # always recompile the codebase for each test and that takes way too long. if: false # Pin to `20.04` instead of `ubuntu-latest`, until ubuntu-latest migration is complete # See also runs-on: ubuntu-20.04 strategy: matrix: target: - reth-primitives - reth-db - reth-eth-wire - reth-codecs steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install toolchain uses: dtolnay/rust-toolchain@stable with: components: llvm-tools-preview - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install fuzzer uses: actions-rs/cargo@v1 with: command: install args: cargo-test-fuzz afl - name: Force install cargo-afl run: | cargo install --force afl cargo afl --version - name: Install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: Run fuzz tests run: | ./.github/scripts/fuzz.sh ${{ matrix.target }} env: AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES: 1 - name: Upload coverage data to codecov uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} files: lcov.info flags: fuzz-tests lint: # Pin to `20.04` instead of `ubuntu-latest`, until ubuntu-latest migration is complete # See also runs-on: ubuntu-20.04 steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install toolchain uses: dtolnay/rust-toolchain@nightly with: components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: cargo fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all --check - name: cargo clippy uses: actions-rs/clippy-check@v1 with: args: --all --all-features token: ${{ secrets.GITHUB_TOKEN }}