mirror of
https://github.com/outbackdingo/debos.git
synced 2026-01-28 10:18:43 +00:00
The arch linux tests require a newer version of archlinux-keyring than
what is in Debian stable; so revert back to pulling the latest version.
This partially reverts 36cf33366b.
Signed-off-by: Christopher Obbard <chris.obbard@collabora.com>
127 lines
3.6 KiB
Docker
127 lines
3.6 KiB
Docker
# Global ARGs shared by all stages
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
ARG GOPATH=/usr/local/go
|
|
|
|
### first stage - builder ###
|
|
FROM debian:bookworm-slim as builder
|
|
|
|
ARG DEBIAN_FRONTEND
|
|
ARG GOPATH
|
|
ENV GOPATH=${GOPATH}
|
|
|
|
# install debos build and unit-test dependencies
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
gcc \
|
|
git \
|
|
golang-go \
|
|
libc6-dev \
|
|
libostree-dev \
|
|
unzip && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Build debos
|
|
COPY . $GOPATH/src/github.com/go-debos/debos
|
|
WORKDIR $GOPATH/src/github.com/go-debos/debos/cmd/debos
|
|
RUN go install ./...
|
|
|
|
# Install the latest archlinux-keyring, since the one in Debian is bound
|
|
# to get outdated sooner or later.
|
|
# WARNING: returning to the debian package will break the pacstrap action
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
pkgconf \
|
|
python3-all \
|
|
sq \
|
|
systemd \
|
|
make && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN git clone https://gitlab.archlinux.org/archlinux/archlinux-keyring && \
|
|
cd archlinux-keyring && \
|
|
git checkout master && \
|
|
make build && \
|
|
make PREFIX=/usr KEYRING_TARGET_DIR=/usr/share/keyrings/ DESTDIR=/arch-keyring install
|
|
|
|
### second stage - runner ###
|
|
FROM debian:bookworm-slim as runner
|
|
|
|
ARG DEBIAN_FRONTEND
|
|
ARG GOPATH
|
|
|
|
# Set HOME to a writable directory in case something wants to cache things
|
|
ENV HOME=/tmp
|
|
|
|
LABEL org.label-schema.name "debos"
|
|
LABEL org.label-schema.description "Debian OS builder"
|
|
LABEL org.label-schema.vcs-url = "https://github.com/go-debos/debos"
|
|
LABEL org.label-schema.docker.cmd 'docker run \
|
|
--rm \
|
|
--interactive \
|
|
--tty \
|
|
--device /dev/kvm \
|
|
--user $(id -u) \
|
|
--workdir /recipes \
|
|
--mount "type=bind,source=$(pwd),destination=/recipes" \
|
|
--security-opt label=disable'
|
|
|
|
# debos runtime dependencies
|
|
# ca-certificates is required to validate HTTPS certificates when getting debootstrap release file
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
apt-transport-https \
|
|
binfmt-support \
|
|
bmap-tools \
|
|
btrfs-progs \
|
|
busybox \
|
|
bzip2 \
|
|
ca-certificates \
|
|
debootstrap \
|
|
dosfstools \
|
|
e2fsprogs \
|
|
equivs \
|
|
fdisk \
|
|
f2fs-tools \
|
|
git \
|
|
gzip \
|
|
pigz \
|
|
libostree-1-1 \
|
|
libslirp-helper \
|
|
linux-image-amd64 \
|
|
openssh-client \
|
|
parted \
|
|
pkg-config \
|
|
qemu-system-x86 \
|
|
qemu-user-static \
|
|
qemu-utils \
|
|
rsync \
|
|
systemd \
|
|
systemd-container \
|
|
systemd-resolved \
|
|
u-boot-tools \
|
|
unzip \
|
|
user-mode-linux \
|
|
xfsprogs \
|
|
xz-utils \
|
|
zip \
|
|
makepkg \
|
|
pacman-package-manager \
|
|
arch-install-scripts && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# debian's qemu-user-static package no longer registers binfmts
|
|
# if running inside a virtualmachine; dockerhub builds are inside a vm
|
|
RUN for arch in aarch64 alpha arm armeb cris hexagon hppa m68k microblaze mips mips64 mips64el mipsel mipsn32 mipsn32el ppc ppc64 ppc64le riscv32 riscv64 s390x sh4 sh4eb sparc sparc32plus sparc64 xtensa xtensaeb; do \
|
|
update-binfmts --import qemu-$arch; \
|
|
done
|
|
|
|
COPY --from=builder $GOPATH/bin/debos /usr/local/bin/debos
|
|
|
|
# Install the latest archlinux-keyring, since the one in Debian is bound
|
|
# to get outdated sooner or later.
|
|
# WARNING: returning to the debian package will break the pacstrap action
|
|
COPY --from=builder /arch-keyring/usr/share/keyrings /usr/share/keyrings
|
|
|
|
ENTRYPOINT ["/usr/local/bin/debos"]
|