diff --git a/.github/workflows/publish_image.yml b/.github/workflows/publish_image.yml index f15ad415..457a98d0 100644 --- a/.github/workflows/publish_image.yml +++ b/.github/workflows/publish_image.yml @@ -11,10 +11,18 @@ jobs: include: - name: sequencer_runner dockerfile: ./sequencer_runner/Dockerfile + build_args: | + STANDALONE=false + - name: sequencer_runner-standalone + dockerfile: ./sequencer_runner/Dockerfile + build_args: | + STANDALONE=true - name: indexer_service dockerfile: ./indexer/service/Dockerfile + build_args: "" - name: explorer_service dockerfile: ./explorer_service/Dockerfile + build_args: "" steps: - uses: actions/checkout@v5 @@ -49,5 +57,6 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + build-args: ${{ matrix.build_args }} cache-from: type=gha cache-to: type=gha,mode=max diff --git a/sequencer_runner/Dockerfile b/sequencer_runner/Dockerfile index 679ff361..decb0262 100644 --- a/sequencer_runner/Dockerfile +++ b/sequencer_runner/Dockerfile @@ -31,6 +31,9 @@ RUN curl -sSL https://raw.githubusercontent.com/logos-blockchain/logos-blockchai WORKDIR /sequencer_runner +# Build argument to enable standalone feature (defaults to false) +ARG STANDALONE=false + # Planner stage - generates dependency recipe FROM chef AS planner COPY . . @@ -38,15 +41,24 @@ RUN cargo chef prepare --bin sequencer_runner --recipe-path recipe.json # Builder stage - builds dependencies and application FROM chef AS builder +ARG STANDALONE COPY --from=planner /sequencer_runner/recipe.json recipe.json # Build dependencies only (this layer will be cached) -RUN cargo chef cook --bin sequencer_runner --release --recipe-path recipe.json +RUN if [ "$STANDALONE" = "true" ]; then \ + cargo chef cook --bin sequencer_runner --features standalone --release --recipe-path recipe.json; \ + else \ + cargo chef cook --bin sequencer_runner --release --recipe-path recipe.json; \ + fi # Copy source code COPY . . # Build the actual application -RUN cargo build --release --bin sequencer_runner +RUN if [ "$STANDALONE" = "true" ]; then \ + cargo build --release --features standalone --bin sequencer_runner; \ + else \ + cargo build --release --bin sequencer_runner; \ + fi # Strip debug symbols to reduce binary size RUN strip /sequencer_runner/target/release/sequencer_runner