diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index b8d3f378fca4..334df715a263 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -17,38 +17,10 @@ concurrency: jobs: prepare-reth: - if: github.repository == 'paradigmxyz/reth' - timeout-minutes: 45 - runs-on: - group: Reth - steps: - - uses: actions/checkout@v4 - - run: mkdir artifacts - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Build reth - run: | - cargo build --features asm-keccak --profile hivetests --bin reth --locked - mkdir dist && cp ./target/hivetests/reth ./dist/reth - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Build and export reth image - uses: docker/build-push-action@v6 - with: - context: . - file: .github/assets/hive/Dockerfile - tags: ghcr.io/paradigmxyz/reth:latest - outputs: type=docker,dest=./artifacts/reth_image.tar - cache-from: type=gha - cache-to: type=gha,mode=max - - - name: Upload reth image - uses: actions/upload-artifact@v4 - with: - name: artifacts - path: ./artifacts + uses: ./.github/workflows/prepare-reth.yml + with: + image_tag: ghcr.io/paradigmxyz/reth:latest + binary_name: reth prepare-hive: if: github.repository == 'paradigmxyz/reth' diff --git a/.github/workflows/kurtosis-op.yml b/.github/workflows/kurtosis-op.yml index 19e67a6bcc64..85a8e706c6eb 100644 --- a/.github/workflows/kurtosis-op.yml +++ b/.github/workflows/kurtosis-op.yml @@ -17,38 +17,12 @@ concurrency: jobs: prepare-reth: - if: github.repository == 'paradigmxyz/reth' - timeout-minutes: 45 - runs-on: - group: Reth - steps: - - uses: actions/checkout@v4 - - run: mkdir artifacts - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Build reth - run: | - cargo build --features optimism,asm-keccak --profile hivetests --bin op-reth --manifest-path crates/optimism/bin/Cargo.toml --locked - mkdir dist && cp ./target/hivetests/op-reth ./dist/reth - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Build and export reth image - uses: docker/build-push-action@v6 - with: - context: . - file: .github/assets/hive/Dockerfile - tags: ghcr.io/paradigmxyz/op-reth:kurtosis-ci - outputs: type=docker,dest=./artifacts/reth_image.tar - cache-from: type=gha - cache-to: type=gha,mode=max - - - name: Upload reth image - uses: actions/upload-artifact@v4 - with: - name: artifacts - path: ./artifacts + uses: ./.github/workflows/prepare-reth.yml + with: + image_tag: ghcr.io/paradigmxyz/op-reth:kurtosis-ci + binary_name: op-reth + cargo_features: optimism,asm-keccak + cargo_package: crates/optimism/bin/Cargo.toml test: timeout-minutes: 60 diff --git a/.github/workflows/kurtosis.yml b/.github/workflows/kurtosis.yml index 3e1b74321116..ab0c95939c8e 100644 --- a/.github/workflows/kurtosis.yml +++ b/.github/workflows/kurtosis.yml @@ -17,38 +17,10 @@ concurrency: jobs: prepare-reth: - if: github.repository == 'paradigmxyz/reth' - timeout-minutes: 45 - runs-on: - group: Reth - steps: - - uses: actions/checkout@v4 - - run: mkdir artifacts - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Build reth - run: | - cargo build --features asm-keccak --profile hivetests --bin reth --locked - mkdir dist && cp ./target/hivetests/reth ./dist/reth - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Build and export reth image - uses: docker/build-push-action@v6 - with: - context: . - file: .github/assets/hive/Dockerfile - tags: ghcr.io/paradigmxyz/reth:kurtosis-ci - outputs: type=docker,dest=./artifacts/reth_image.tar - cache-from: type=gha - cache-to: type=gha,mode=max - - - name: Upload reth image - uses: actions/upload-artifact@v4 - with: - name: artifacts - path: ./artifacts + uses: ./.github/workflows/prepare-reth.yml + with: + image_tag: ghcr.io/paradigmxyz/reth:kurtosis-ci + binary_name: reth test: timeout-minutes: 60 diff --git a/.github/workflows/prepare-reth.yml b/.github/workflows/prepare-reth.yml new file mode 100644 index 000000000000..1b5f0e70cc96 --- /dev/null +++ b/.github/workflows/prepare-reth.yml @@ -0,0 +1,66 @@ +name: Prepare Reth Image + +on: + workflow_call: + inputs: + image_tag: + required: true + type: string + description: "Docker image tag to use" + binary_name: + required: false + type: string + default: "reth" + description: "Binary name to build (reth or op-reth)" + cargo_features: + required: false + type: string + default: "asm-keccak" + description: "Cargo features to enable" + cargo_package: + required: false + type: string + description: "Optional cargo package path" + +jobs: + prepare-reth: + if: github.repository == 'paradigmxyz/reth' + timeout-minutes: 45 + runs-on: + group: Reth + steps: + - uses: actions/checkout@v4 + - run: mkdir artifacts + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + + - name: Build reth + run: | + CARGO_CMD="cargo build --features ${{ inputs.cargo_features }} --profile hivetests --bin ${{ inputs.binary_name }} --locked" + if [ -n "${{ inputs.cargo_package }}" ]; then + CARGO_CMD="$CARGO_CMD --manifest-path ${{ inputs.cargo_package }}" + fi + $CARGO_CMD + mkdir dist && cp ./target/hivetests/${{ inputs.binary_name }} ./dist/reth + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and export reth image + uses: docker/build-push-action@v6 + with: + context: . + file: .github/assets/hive/Dockerfile + tags: ${{ inputs.image_tag }} + outputs: type=docker,dest=./artifacts/reth_image.tar + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Upload reth image + id: upload + uses: actions/upload-artifact@v4 + with: + name: artifacts + path: ./artifacts