diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..633c37e --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,120 @@ +name: Test + +on: + pull_request: + push: + branches: + - master + +env: + REQWEST_TEST_BODY_FULL: 1 + RUST_BACKTRACE: 1 + +jobs: + style: + name: Check Style + runs-on: ubuntu-latest + env: + SQLX_OFFLINE: true + steps: + - uses: actions/checkout@v3 + - uses: actions/cache@v2 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - name: Install rust + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt + # + - run: cargo fmt -- --check + - run: cargo check --all-targets + - run: cargo clippy -- --deny warnings + + tests: + name: Tests ${{ matrix.name }} + needs: [style] + runs-on: ${{ matrix.os || 'ubuntu-latest' }} + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + include: + - name: linux / stable + - name: linux / beta + rust: beta + # - name: macOS / stable + # os: macOS-latest + # TODO: Support windows + # - name: windows / stable-x86_64-gnu + # os: windows-latest + # rust: stable-x86_64-pc-windows-gnu + # target: x86_64-pc-windows-gnu + + steps: + - uses: actions/checkout@v3 + - uses: actions/cache@v2 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - name: Install rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.rust || 'stable' }} + targets: ${{ matrix.target }} + - name: Setup docker (missing on MacOS) + if: runner.os == 'macos' + run: | + brew install docker + brew install docker-buildx + - name: Test docker + run: docker run hello-world + - name: Check + run: cargo check + - name: Test + run: cargo test -- --test-threads=1 --nocapture + + docs: + name: Docs + runs-on: ubuntu-latest + env: + SQLX_OFFLINE: true + steps: + - uses: actions/checkout@v3 + - uses: actions/cache@v2 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + # + - name: Check documentation + run: cargo doc --no-deps --document-private-items --all-features + env: + RUSTDOCFLAGS: -D warnings + + docker-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: docker/setup-buildx-action@v2 + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: . + load: true + tags: blobshare:dev + cache-from: type=gha + cache-to: type=gha,mode=max + - name: Test image + run: docker run --rm blobshare:dev --help + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1dc5490 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,52 @@ +FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef +WORKDIR /app + +LABEL org.opencontainers.image.source=https://github.com/paradigmxyz/reth +LABEL org.opencontainers.image.licenses="MIT OR Apache-2.0" + +# Install system dependencies +RUN apt-get update && apt-get -y upgrade && apt-get install -y libclang-dev pkg-config + +# Builds a cargo-chef plan +FROM chef AS planner +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS builder +COPY --from=planner /app/recipe.json recipe.json + +# Build profile, release by default +ARG BUILD_PROFILE=release +ENV BUILD_PROFILE $BUILD_PROFILE + +# Extra Cargo flags +ARG RUSTFLAGS="" +ENV RUSTFLAGS "$RUSTFLAGS" + +# Extra Cargo features +ARG FEATURES="" +ENV FEATURES $FEATURES + +# Builds dependencies +RUN cargo chef cook --profile $BUILD_PROFILE --features "$FEATURES" --recipe-path recipe.json + +# Build application +COPY . . +RUN cargo build --profile $BUILD_PROFILE --features "$FEATURES" --locked --bin reth + +# ARG is not resolved in COPY so we have to hack around it by copying the +# binary to a temporary location +RUN cp /app/target/$BUILD_PROFILE/reth /app/reth + +# Use Ubuntu as the release image +FROM ubuntu AS runtime +WORKDIR /app + +# Copy reth over from the build stage +COPY --from=builder /app/reth /usr/local/bin + +# Copy licenses +COPY LICENSE-* ./ + +EXPOSE 30303 30303/udp 9001 8545 8546 +ENTRYPOINT ["/usr/local/bin/reth"] diff --git a/src/execute.rs b/src/execute.rs index b7dc194..5b32c4a 100644 --- a/src/execute.rs +++ b/src/execute.rs @@ -42,17 +42,7 @@ impl GnosisEvmExecutor where EvmConfig: ConfigureEvm, { - /// Executes the transactions in the block and returns the receipts of the transactions in the - /// block, the total gas used and the list of EIP-7685 [requests](Request). - /// - /// This applies the pre-execution and post-execution changes that require an [EVM](Evm), and - /// executes the transactions. - /// - /// # Note - /// - /// It does __not__ apply post-execution changes that do not require an [EVM](Evm), for that see - /// [`EthBlockExecutor::post_execution`]. - // [Gnosis/fork] Copy paste code from crates/ethereum/evm/src/execute.rs::EthBatchExecutor + // [Gnosis/fork] Copy paste code from crates/ethereum/evm/src/execute.rs::EthEvmExecutor fn execute_state_transitions( &self, block: &BlockWithSenders, diff --git a/src/lib.rs b/src/lib.rs index b3d9c6f..00a2d27 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -35,7 +35,7 @@ impl GnosisNode { Self { args } } - /// Returns the components for the given [Args]. + /// Returns the components for the given [GnosisArgs]. pub fn components( _args: GnosisArgs, ) -> ComponentsBuilder<