@@ -7,15 +7,11 @@ FROM ubuntu:24.04
77ARG DOCKER_VERSION=27.5.1
88ARG BUILDX_VERSION=v0.21.1
99ARG TARGETARCH
10- ARG KUBECTL_VERSION=v1.35.1
11- ARG HELM_VERSION=v4.1.1
12- ARG PROTOC_VERSION=29.6
13- ARG SCCACHE_VERSION=v0.14.0
1410
1511ENV DEBIAN_FRONTEND=noninteractive
1612ENV MISE_DATA_DIR=/opt/mise
1713ENV MISE_CACHE_DIR=/opt/mise/cache
18- ENV PATH="/opt/mise/shims:/root/.local/bin:$PATH"
14+ ENV PATH="/opt/mise/shims:/root/.cargo/bin:/root/. local/bin:$PATH"
1915
2016# Install system dependencies
2117RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -28,7 +24,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
2824 python3 \
2925 python3-venv \
3026 cmake \
31- protobuf-compiler \
3227 socat \
3328 unzip \
3429 xz-utils \
@@ -58,50 +53,18 @@ RUN case "$TARGETARCH" in \
5853 && /tmp/aws/install \
5954 && rm -rf /tmp/aws /tmp/awscliv2.zip
6055
61- # Install kubectl, helm, and protoc without GitHub API lookups
62- RUN case "$TARGETARCH" in \
63- amd64) karch=amd64; helm_arch=amd64; protoc_arch=x86_64 ;; \
64- arm64) karch=arm64; helm_arch=arm64; protoc_arch=aarch_64 ;; \
65- *) echo "Unsupported TARGETARCH: $TARGETARCH"; exit 1 ;; \
66- esac \
67- && curl -fsSL "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/${karch}/kubectl" -o /usr/local/bin/kubectl \
68- && chmod +x /usr/local/bin/kubectl \
69- && curl -fsSL "https://get.helm.sh/helm-${HELM_VERSION}-linux-${helm_arch}.tar.gz" -o /tmp/helm.tgz \
70- && tar -xzf /tmp/helm.tgz -C /tmp \
71- && mv "/tmp/linux-${helm_arch}/helm" /usr/local/bin/helm \
72- && chmod +x /usr/local/bin/helm \
73- && rm -rf /tmp/helm.tgz "/tmp/linux-${helm_arch}" \
74- && curl -fsSL "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-${protoc_arch}.zip" -o /tmp/protoc.zip \
75- && unzip -q /tmp/protoc.zip -d /tmp/protoc \
76- && mv /tmp/protoc/bin/protoc /usr/local/bin/protoc \
77- && chmod +x /usr/local/bin/protoc \
78- && rm -rf /tmp/protoc /tmp/protoc.zip
79-
80- # Install sccache directly on amd64 (mise/aqua plugin is arch-limited)
81- RUN if [ "$TARGETARCH" = "amd64" ]; then \
82- curl -fsSL "https://github.com/mozilla/sccache/releases/download/${SCCACHE_VERSION}/sccache-${SCCACHE_VERSION}-x86_64-unknown-linux-musl.tar.gz" -o /tmp/sccache.tgz \
83- && tar -xzf /tmp/sccache.tgz -C /tmp \
84- && mv "/tmp/sccache-${SCCACHE_VERSION}-x86_64-unknown-linux-musl/sccache" /usr/local/bin/sccache \
85- && chmod +x /usr/local/bin/sccache \
86- && rm -rf /tmp/sccache.tgz "/tmp/sccache-${SCCACHE_VERSION}-x86_64-unknown-linux-musl"; \
87- else \
88- echo "Skipping sccache install on $TARGETARCH"; \
89- fi
90-
9156# Install mise
9257RUN curl https://mise.run | sh
9358
94- # Copy mise.toml and build task includes, then install core tools
59+ # Copy mise.toml and build task includes, then install all tools via mise
9560COPY mise.toml /opt/mise/mise.toml
9661COPY build/ /opt/mise/build/
9762WORKDIR /opt/mise
63+ ARG MISE_GITHUB_TOKEN
9864RUN mise trust /opt/mise/mise.toml && \
99- env -u RUSTC_WRAPPER mise install python rust 'cargo:cargo-edit' && \
65+ env -u RUSTC_WRAPPER mise install && \
10066 /root/.cargo/bin/rustup component remove rust-docs || true && \
10167 rm -rf /root/.rustup/toolchains/*/share/doc /root/.rustup/toolchains/*/share/man
10268
103- # Install uv directly to avoid GitHub API rate limits in CI image builds
104- RUN curl -LsSf https://astral.sh/uv/0.10.2/install.sh | sh
105-
10669# Set working directory for CI jobs
10770WORKDIR /builds
0 commit comments