feat(ci): add CUDA-free CI builder image for service compilation
Based on rust:1.89-slim-bookworm (~2-3GB vs ~8GB CUDA devel). Same toolchain: mold 2.35, protoc 28.3, sccache 0.10, clang, lld. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
47
infra/docker/Dockerfile.ci-builder-cpu
Normal file
47
infra/docker/Dockerfile.ci-builder-cpu
Normal file
@@ -0,0 +1,47 @@
|
||||
# CUDA-free CI builder image for Foxhunt service compilation
|
||||
# ~2-3GB vs ~8GB for the CUDA devel variant (Dockerfile.ci-builder)
|
||||
# Contains: Rust 1.89, protoc, sccache, git, OpenSSL, clang, mold, lld, make
|
||||
# Build: docker build -f infra/docker/Dockerfile.ci-builder-cpu -t foxhunt-ci-builder-cpu .
|
||||
# Push: docker tag foxhunt-ci-builder-cpu rg.fr-par.scw.cloud/foxhunt-ci/ci-builder-cpu:latest
|
||||
# docker push rg.fr-par.scw.cloud/foxhunt-ci/ci-builder-cpu:latest
|
||||
|
||||
FROM rust:1.89-slim-bookworm
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
git \
|
||||
curl \
|
||||
ca-certificates \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
lld \
|
||||
clang \
|
||||
make \
|
||||
perl \
|
||||
build-essential \
|
||||
libfontconfig1-dev \
|
||||
unzip \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# mold linker — 2-5x faster than lld for final link step on large Rust binaries
|
||||
RUN curl -fsSL https://github.com/rui314/mold/releases/download/v2.35.1/mold-2.35.1-x86_64-linux.tar.gz \
|
||||
| tar xz -C /usr/local --strip-components=1 \
|
||||
&& chmod +x /usr/local/bin/mold
|
||||
|
||||
# protoc 28.3 (proto3 optional support, matches local dev)
|
||||
RUN curl -fsSL https://github.com/protocolbuffers/protobuf/releases/download/v28.3/protoc-28.3-linux-x86_64.zip -o /tmp/protoc.zip \
|
||||
&& unzip -o /tmp/protoc.zip -d /usr/local bin/protoc 'include/*' \
|
||||
&& rm /tmp/protoc.zip \
|
||||
&& chmod +x /usr/local/bin/protoc
|
||||
|
||||
# sccache for S3-backed build caching
|
||||
RUN curl -fsSL https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-x86_64-unknown-linux-musl.tar.gz \
|
||||
| tar xz -C /usr/local/bin --strip-components=1 sccache-v0.10.0-x86_64-unknown-linux-musl/sccache \
|
||||
&& chmod +x /usr/local/bin/sccache
|
||||
|
||||
# clippy pre-installed
|
||||
RUN rustup component add clippy
|
||||
|
||||
# Verify
|
||||
RUN rustc --version && cargo --version && git --version && protoc --version && sccache --version && make --version && mold --version
|
||||
Reference in New Issue
Block a user