Files
docker-images/arch-builder/Dockerfile
Walter Oggioni 30614158c4
All checks were successful
CI / Build arch-builder docker images (push) Successful in 23m7s
add worker-build executable to gitea image
2025-08-04 15:58:06 +08:00

137 lines
4.6 KiB
Docker

FROM archlinux:latest AS base
COPY mirrorlist /etc/pacman.d/mirrolist
RUN pacman-key --init
RUN pacman-key --refresh-keys
RUN curl --retry 3 -OJ https://gitea.woggioni.net/api/packages/woggioni/arch/repository.key
RUN pacman-key --add repository.key
RUN pacman-key --lsign-key 0D28BF66FDB45D18D8EBEE5D4C91DADCD00B3F77
RUN --mount=type=bind,source=pacman-gitea-repository.conf,target=pacman-gitea-repository.conf cat pacman-gitea-repository.conf >> /etc/pacman.conf
RUN rm repository.key
RUN --mount=type=cache,target=/var/cache/pacman pacman -Syu --noconfirm
RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \
curl \
aarch64-unknown-linux-musl-gcc x86_64-unknown-linux-musl-gcc \
arm-unknown-linux-musleabihf-gcc \
arm-unknown-linux-musleabi-gcc \
x86_64-unknown-linux-musl-gcc \
x86_64-w64-mingw32-gcc \
aarch64-unknown-linux-musl-gcc x86_64-unknown-linux-musl-zlib \
arm-unknown-linux-musleabihf-zlib \
arm-unknown-linux-musleabi-zlib \
x86_64-unknown-linux-musl-zlib \
x86_64-w64-mingw32-zlib
RUN mkdir downloads
RUN ln -s /opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-gcc /usr/local/bin/aarch64-linux-musl-gcc
RUN ln -s /opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-gcc /usr/local/bin/x86_64-linux-musl-gcc
RUN ln -s /opt/x-tools/arm-unknown-linux-musleabihf/bin/arm-unknown-linux-musleabihf-gcc /usr/local/bin/arm-linux-musleabihf-gcc
RUN ln -s /opt/x-tools/arm-unknown-linux-musleabihf/bin/arm-unknown-linux-musleabi-gcc /usr/local/bin/arm-linux-musleabi-gcc
RUN ln -s /opt/x-tools/x86_64-w64-mingw32/bin/x86_64-w64-mingw32-gcc /usr/local/bin/x86_64-pc-windows-gnu-gcc
COPY makepkg/* /etc/
RUN useradd luser -G users -u 1000 -s /bin/bash -m -d /home/luser
RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \
git \
cmake \
base-devel \
meson \
tar \
xz \
ccache \
lzop \
lz4 \
bzip2 \
gzip \
upx
FROM base AS kernel
RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \
jre21-openjdk \
bc \
cpio \
gettext \
libelf \
pahole \
perl \
python \
python-pip \
python-build \
python-wheel \
graphviz \
imagemagick \
python-sphinx \
python-yaml \
openssh \
rust \
rust-src \
rust-bindgen \
texlive-latexextra
USER luser
WORKDIR /home/luser
FROM base AS rust
RUN mkdir -p /etc/cargo
COPY --chown=1000:1000 config.toml /home/luser/.cargo/config.toml
COPY --chown=1000:1000 sccache_config.toml /home/luser/.config/sccache/config
RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \
rustup \
trunk \
sccache \
llvm \
clang
FROM rust AS rust-full
RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \
hidapi \
protobuf
USER luser
WORKDIR /home/luser
RUN rustup update
RUN rustup toolchain install stable-x86_64-unknown-linux-gnu --profile minimal
RUN rustup component add rustfmt
RUN rustup target add \
x86_64-unknown-linux-musl \
x86_64-unknown-linux-gnu \
armv7-unknown-linux-musleabihf \
arm-unknown-linux-musleabi \
aarch64-unknown-linux-musl \
aarch64-unknown-linux-gnu \
wasm32-unknown-unknown \
wasm32-wasip2
FROM base AS gitea_act_runner
RUN --mount=type=bind,source=woggioni.net.ca.pem,target=/root.pem trust anchor root.pem
RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed nodejs npm docker docker-buildx btrfs-progs hidapi protobuf rustup llvm clang trunk emscripten sccache
RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed gitea-act-runner jdk21-graalvm-bin jdk23-graalvm-bin jdk21-graalvm-ce-bin jdk23-graalvm-ce-bin
RUN usermod -a luser -G docker
USER luser
WORKDIR /home/luser
COPY --chown=1000:1000 config.toml /home/luser/.cargo/config.toml
COPY --chown=1000:1000 sccache_config.toml /home/luser/.config/sccache/config
RUN rustup update
RUN rustup toolchain install stable-x86_64-unknown-linux-gnu --profile minimal
RUN rustup component add rustfmt
RUN rustup component add clippy
RUN rustup target add \
x86_64-unknown-linux-musl \
x86_64-unknown-linux-gnu \
armv7-unknown-linux-musleabihf \
arm-unknown-linux-musleabi \
aarch64-unknown-linux-musl \
aarch64-unknown-linux-gnu \
wasm32-unknown-unknown \
wasm32-wasip2
RUN cargo install worker-build
RUN npm install -D wrangler
ENV PATH="/home/luser/.local/bin:/home/luser/.cargo/bin:${PATH}"
CMD ["/usr/lib/gitea/act_runner/act_runner", "daemon", "--config", "/var/lib/gitea/act_runner.yaml"]