Skip to content

Commit c980252

Browse files
samoht9277klaus993entropidelicJuArce
authored
feat(CI): optimize rust deps for Docker CI (#1278)
Co-authored-by: Klaus Lungwitz <[email protected]> Co-authored-by: Mariano Nicolini <[email protected]> Co-authored-by: Klaus @ LambdaClass <[email protected]> Co-authored-by: JuArce <[email protected]>
1 parent d5d8eb3 commit c980252

File tree

7 files changed

+158
-28
lines changed

7 files changed

+158
-28
lines changed

.dockerignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ volume
1111
nonce_*.bin
1212
docker-compose.yaml
1313
.github/**
14-
**.md
14+
**.md

.github/workflows/send-proofs-docker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323

2424
steps:
2525
- name: Log in to GitHub Container Registry
26-
uses: docker/login-action@v2
26+
uses: docker/login-action@v3
2727
with:
2828
registry: ghcr.io
2929
username: ${{ github.actor }}

config-files/config-aggregator-docker.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ aggregator:
2929
telemetry_ip_port_address: localhost:4001
3030
garbage_collector_period: 2m #The period of the GC process. Suggested value for Prod: '168h' (7 days)
3131
garbage_collector_tasks_age: 20 #The age of tasks that will be removed by the GC, in blocks. Suggested value for prod: '216000' (30 days)
32-
garbage_collector_tasks_interval: 10 #The interval of queried blocks to get an old batch. Suggested value for prod: '900' (3 hours)
32+
garbage_collector_tasks_interval: 10 #The interval of queried blocks to get an old batch. Suggested value for prod: '900' (3 hours)

docker/aggregator.Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ COPY core ./core
99
COPY metrics ./metrics
1010
COPY contracts/bindings/ ./contracts/bindings
1111

12+
RUN go get github.com/ethereum/go-ethereum@latest
1213
RUN go build -o ./aligned-layer-aggregator aggregator/cmd/main.go
1314

1415
FROM debian:bookworm-slim

docker/aligned_base.Dockerfile

Lines changed: 113 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
FROM rust:slim-bookworm
2-
3-
# Install rust nightly-2024-04-17
4-
RUN rustup toolchain install nightly-2024-04-17
1+
FROM debian:bookworm-slim AS base
52

63
ARG BUILDARCH
74
ENV GO_VERSION=1.22.2
@@ -31,12 +28,121 @@ RUN go install github.com/maoueh/zap-pretty@latest
3128
RUN go install github.com/ethereum/go-ethereum/cmd/abigen@latest
3229
RUN go install github.com/Layr-Labs/eigenlayer-cli/cmd/eigenlayer@latest
3330

31+
# Install rust
32+
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
33+
ENV PATH="/root/.cargo/bin:${PATH}"
34+
3435
WORKDIR /aligned_layer
3536

3637
COPY Makefile .
37-
COPY operator ./operator
38-
COPY batcher/aligned-sdk ./batcher/aligned-sdk
38+
ENV CARGO_NET_GIT_FETCH_WITH_CLI=true
39+
40+
FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef
41+
42+
FROM chef AS planner
43+
44+
# build_sp1_linux
45+
COPY operator/sp1/lib/Cargo.toml /aligned_layer/operator/sp1/lib/Cargo.toml
46+
COPY operator/sp1/lib/src/ /aligned_layer/operator/sp1/lib/src/
47+
WORKDIR /aligned_layer/operator/sp1/lib
48+
RUN cargo chef prepare --recipe-path /aligned_layer/operator/sp1/lib/recipe.json
49+
50+
# build_risc_zero_linux
51+
COPY operator/risc_zero/lib/Cargo.toml /aligned_layer/operator/risc_zero/lib/Cargo.toml
52+
COPY operator/risc_zero/lib/src/ /aligned_layer/operator/risc_zero/lib/src/
53+
WORKDIR /aligned_layer/operator/risc_zero/lib
54+
RUN cargo chef prepare --recipe-path /aligned_layer/operator/risc_zero/lib/recipe.json
55+
56+
# build_sp1_linux_old
57+
COPY operator/sp1_old/lib/Cargo.toml /aligned_layer/operator/sp1_old/lib/Cargo.toml
58+
COPY operator/sp1_old/lib/src/ /aligned_layer/operator/sp1_old/lib/src/
59+
WORKDIR /aligned_layer/operator/sp1_old/lib/src/
60+
RUN cargo chef prepare --recipe-path /aligned_layer/operator/sp1_old/lib/recipe.json
61+
62+
# build_risc_zero_linux_old
63+
COPY operator/risc_zero_old/lib/Cargo.toml /aligned_layer/operator/risc_zero_old/lib/Cargo.toml
64+
COPY operator/risc_zero_old/lib/src/ /aligned_layer/operator/risc_zero_old/lib/src/
65+
WORKDIR /aligned_layer/operator/risc_zero_old/lib/src/
66+
RUN cargo chef prepare --recipe-path /aligned_layer/operator/risc_zero_old/lib/recipe.json
67+
68+
# build_merkle_tree_linux
69+
COPY operator/merkle_tree/lib/Cargo.toml /aligned_layer/operator/merkle_tree/lib/Cargo.toml
70+
COPY operator/merkle_tree/lib/src/ /aligned_layer/operator/merkle_tree/lib/src/
71+
WORKDIR operator/merkle_tree/lib
72+
RUN cargo chef prepare --recipe-path /aligned_layer/operator/merkle_tree/lib/recipe.json
73+
74+
FROM chef AS chef_builder
75+
76+
COPY batcher/aligned-sdk /aligned_layer/batcher/aligned-sdk/
3977

78+
# build_sp1_linux
79+
COPY operator/sp1/ /aligned_layer/operator/sp1/
80+
COPY --from=planner /aligned_layer/operator/sp1/lib/recipe.json /aligned_layer/operator/sp1/lib/recipe.json
81+
WORKDIR /aligned_layer/operator/sp1/lib/
82+
RUN cargo chef cook --release --recipe-path /aligned_layer/operator/sp1/lib/recipe.json
83+
84+
# build_risc_zero_linux
85+
COPY operator/risc_zero/ /aligned_layer/operator/risc_zero/
86+
COPY --from=planner /aligned_layer/operator/risc_zero/lib/recipe.json /aligned_layer/operator/risc_zero/lib/recipe.json
87+
WORKDIR /aligned_layer/operator/risc_zero/lib/
88+
RUN cargo chef cook --release --recipe-path /aligned_layer/operator/risc_zero/lib/recipe.json
89+
90+
# build_sp1_linux_old
91+
COPY operator/sp1_old/ /aligned_layer/operator/sp1_old/
92+
COPY --from=planner /aligned_layer/operator/sp1_old/lib/recipe.json /aligned_layer/operator/sp1_old/lib/recipe.json
93+
WORKDIR /aligned_layer/operator/sp1_old/lib/
94+
RUN cargo chef cook --release --recipe-path /aligned_layer/operator/sp1_old/lib/recipe.json
95+
96+
# build_risc_zero_linux_old
97+
COPY operator/risc_zero_old/ /aligned_layer/operator/risc_zero_old/
98+
COPY --from=planner /aligned_layer/operator/risc_zero_old/lib/recipe.json /aligned_layer/operator/risc_zero_old/lib/recipe.json
99+
WORKDIR /aligned_layer/operator/risc_zero_old/lib/
100+
RUN cargo chef cook --release --recipe-path /aligned_layer/operator/risc_zero_old/lib/recipe.json
101+
102+
# build_merkle_tree_linux
103+
COPY operator/merkle_tree/ /aligned_layer/operator/merkle_tree/
104+
COPY --from=planner /aligned_layer/operator/merkle_tree/lib/recipe.json /aligned_layer/operator/merkle_tree/lib/recipe.json
105+
WORKDIR /aligned_layer/operator/merkle_tree/lib/
106+
RUN cargo chef cook --release --recipe-path /aligned_layer/operator/merkle_tree/lib/recipe.json
107+
108+
FROM base AS builder
109+
110+
ENV RELEASE_FLAG=--release
111+
ENV TARGET_REL_PATH=release
40112
ENV CARGO_NET_GIT_FETCH_WITH_CLI=true
41113

42-
RUN make build_all_ffi_linux
114+
COPY operator/ /aligned_layer/operator/
115+
COPY batcher/ /aligned_layer/batcher/
116+
COPY --from=chef_builder /aligned_layer/batcher/aligned-sdk /aligned_layer/batcher/aligned-sdk
117+
118+
# build_sp1_linux
119+
COPY --from=chef_builder /aligned_layer/operator/sp1/lib/target/ /aligned_layer/operator/sp1/lib/target/
120+
WORKDIR /aligned_layer/operator/sp1/lib
121+
RUN cargo build ${RELEASE_FLAG}
122+
RUN cp /aligned_layer/operator/sp1/lib/target/${TARGET_REL_PATH}/libsp1_verifier_ffi.so /aligned_layer/operator/sp1/lib/libsp1_verifier_ffi.so
123+
124+
# build_risc_zero_linux
125+
COPY --from=chef_builder /aligned_layer/operator/risc_zero/lib/target/ /aligned_layer/operator/risc_zero/lib/target/
126+
WORKDIR /aligned_layer/operator/risc_zero/lib
127+
RUN cargo build ${RELEASE_FLAG}
128+
RUN cp /aligned_layer/operator/risc_zero/lib/target/${TARGET_REL_PATH}/librisc_zero_verifier_ffi.so /aligned_layer/operator/risc_zero/lib/librisc_zero_verifier_ffi.so
129+
130+
# build_sp1_linux_old
131+
COPY --from=chef_builder /aligned_layer/operator/sp1_old/lib/target/ /aligned_layer/operator/sp1_old/lib/target/
132+
WORKDIR /aligned_layer/operator/sp1_old/lib
133+
RUN cargo build ${RELEASE_FLAG}
134+
RUN cp /aligned_layer/operator/sp1_old/lib/target/${TARGET_REL_PATH}/libsp1_verifier_old_ffi.so /aligned_layer/operator/sp1_old/lib/libsp1_verifier_old_ffi.so
135+
136+
# build_risc_zero_linux_old
137+
COPY --from=chef_builder /aligned_layer/operator/risc_zero_old/lib/target/ /aligned_layer/operator/risc_zero_old/lib/target/
138+
WORKDIR /aligned_layer/operator/risc_zero_old/lib
139+
RUN cargo build ${RELEASE_FLAG}
140+
RUN cp /aligned_layer/operator/risc_zero_old/lib/target/${TARGET_REL_PATH}/librisc_zero_verifier_old_ffi.so /aligned_layer/operator/risc_zero_old/lib/librisc_zero_verifier_old_ffi.so
141+
142+
143+
# build_merkle_tree_linux
144+
COPY --from=chef_builder /aligned_layer/operator/merkle_tree/lib/target/ /aligned_layer/operator/merkle_tree/lib/target/
145+
WORKDIR /aligned_layer/operator/merkle_tree/lib
146+
RUN cargo build ${RELEASE_FLAG}
147+
RUN cp /aligned_layer/operator/merkle_tree/lib/target/${TARGET_REL_PATH}/libmerkle_tree.so /aligned_layer/operator/merkle_tree/lib/libmerkle_tree.so
148+
RUN cp /aligned_layer/operator/merkle_tree/lib/target/${TARGET_REL_PATH}/libmerkle_tree.a /aligned_layer/operator/merkle_tree/lib/libmerkle_tree.a

docker/batcher.Dockerfile

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,55 @@
1-
FROM ghcr.io/yetanotherco/aligned_layer/aligned_base:latest AS builder
2-
3-
RUN apt update -y
4-
RUN apt install -y gcc
1+
FROM ghcr.io/yetanotherco/aligned_layer/aligned_base:latest AS base
52

63
COPY go.mod .
74
COPY go.sum .
8-
COPY batcher ./batcher
5+
COPY batcher/aligned-batcher/gnark/verifier.go /aligned_layer/batcher/aligned-batcher/gnark/verifier.go
96

10-
WORKDIR /aligned_layer/batcher/aligned-batcher
7+
RUN apt update -y && apt install -y gcc
8+
RUN go build -buildmode=c-archive -o libverifier.a /aligned_layer/batcher/aligned-batcher/gnark/verifier.go
119

12-
RUN go build -buildmode=c-archive -o libverifier.a ./gnark/verifier.go
10+
FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef
1311

14-
WORKDIR /aligned_layer
12+
FROM chef AS planner
1513

16-
COPY batcher/aligned-batcher/Cargo.toml batcher/aligned-batcher/Cargo.toml
17-
COPY batcher/aligned/Cargo.toml batcher/aligned/Cargo.toml
14+
COPY batcher/aligned-batcher/Cargo.toml /aligned_layer/batcher/aligned-batcher/Cargo.toml
15+
COPY batcher/aligned-batcher/src/main.rs /aligned_layer/batcher/aligned-batcher/src/main.rs
16+
WORKDIR /aligned_layer/batcher/aligned-batcher/
17+
RUN cargo chef prepare --recipe-path /aligned_layer/batcher/aligned-batcher/recipe.json
1818

19-
RUN cargo build --manifest-path ./batcher/aligned-batcher/Cargo.toml --release
20-
RUN cargo build --manifest-path ./batcher/aligned/Cargo.toml --release
19+
COPY batcher/aligned/Cargo.toml /aligned_layer/batcher/aligned/Cargo.toml
20+
COPY batcher/aligned/src/main.rs /aligned_layer/batcher/aligned/src/main.rs
21+
WORKDIR /aligned_layer/batcher/aligned/
22+
RUN cargo chef prepare --recipe-path /aligned_layer/batcher/aligned/recipe.json
2123

22-
COPY scripts/test_files/gnark_groth16_bn254_infinite_script scripts/test_files/gnark_groth16_bn254_infinite_script
24+
FROM chef AS chef_builder
25+
COPY batcher/aligned-sdk/ /aligned_layer/batcher/aligned-sdk/
2326

24-
RUN go build -o ./gnark_groth16_bn254_infinite_script scripts/test_files/gnark_groth16_bn254_infinite_script/cmd/main.go
27+
COPY --from=planner /aligned_layer/batcher/aligned-batcher/recipe.json /aligned_layer/batcher/aligned-batcher/recipe.json
28+
WORKDIR /aligned_layer/batcher/aligned-batcher
29+
RUN cargo chef cook --release --recipe-path /aligned_layer/batcher/aligned-batcher/recipe.json
2530

26-
RUN rm -rf operator/
31+
COPY --from=planner /aligned_layer/batcher/aligned/recipe.json /aligned_layer/batcher/aligned/recipe.json
32+
WORKDIR /aligned_layer/batcher/aligned/
33+
RUN cargo chef cook --release --recipe-path /aligned_layer/batcher/aligned/recipe.json
2734

28-
FROM debian:bookworm-slim
35+
FROM base AS builder
36+
COPY . /aligned_layer/
2937

38+
COPY --from=chef_builder /aligned_layer/batcher/aligned-batcher/target/ /aligned_layer/batcher/aligned-batcher/target/
39+
WORKDIR /aligned_layer/batcher/aligned-batcher/
40+
RUN cargo build --manifest-path /aligned_layer/batcher/aligned-batcher/Cargo.toml --release
41+
42+
COPY --from=chef_builder /aligned_layer/batcher/aligned/target/ /aligned_layer/batcher/aligned/target/
43+
WORKDIR /aligned_layer/batcher/aligned/
44+
RUN cargo build --manifest-path /aligned_layer/batcher/aligned/Cargo.toml --release
45+
46+
COPY scripts/test_files/gnark_groth16_bn254_infinite_script/ /aligned_layer/scripts/test_files/gnark_groth16_bn254_infinite_script/
3047
WORKDIR /aligned_layer
48+
RUN go build -o /aligned_layer/gnark_groth16_bn254_infinite_script scripts/test_files/gnark_groth16_bn254_infinite_script/cmd/main.go
49+
50+
RUN rm -rf operator/
51+
52+
FROM debian:bookworm-slim AS final
3153

3254
COPY --from=builder /aligned_layer /aligned_layer
3355
COPY --from=builder /aligned_layer/batcher/target/release/aligned-batcher /usr/local/bin/
@@ -38,7 +60,6 @@ COPY ../scripts/test_files/ ./scripts/test_files
3860
COPY ./config-files/config-batcher-docker.yaml ./config-files/
3961
COPY ./config-files/anvil.batcher.ecdsa.key.json ./config-files/
4062

41-
RUN apt update -y
42-
RUN apt install -y libssl-dev ca-certificates
63+
RUN apt update -y && apt install -y libssl-dev ca-certificates
4364

4465
CMD ["aligned-batcher", "--config", "./config-files/config-batcher-docker.yaml"]

docker/operator.Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
FROM ghcr.io/yetanotherco/aligned_layer/aligned_base:latest AS builder
22

3+
WORKDIR /aligned_layer
4+
35
RUN apt update -y
46
RUN apt install -y gcc
57

0 commit comments

Comments
 (0)