save progress
This commit is contained in:
62
devops/docker/repro-builders/alpine/Dockerfile
Normal file
62
devops/docker/repro-builders/alpine/Dockerfile
Normal file
@@ -0,0 +1,62 @@
|
||||
# Alpine Reproducible Builder
|
||||
# Creates deterministic builds of Alpine packages for fingerprint diffing
|
||||
#
|
||||
# Usage:
|
||||
# docker build -t repro-builder-alpine:3.20 --build-arg RELEASE=3.20 .
|
||||
# docker run -v ./output:/output repro-builder-alpine:3.20 build openssl 3.0.7-r0
|
||||
|
||||
ARG RELEASE=3.20
|
||||
FROM alpine:${RELEASE}
|
||||
|
||||
ARG RELEASE
|
||||
ENV ALPINE_RELEASE=${RELEASE}
|
||||
|
||||
# Install build tools and dependencies
|
||||
RUN apk add --no-cache \
|
||||
alpine-sdk \
|
||||
abuild \
|
||||
sudo \
|
||||
git \
|
||||
curl \
|
||||
binutils \
|
||||
elfutils \
|
||||
coreutils \
|
||||
tar \
|
||||
gzip \
|
||||
xz \
|
||||
patch \
|
||||
diffutils \
|
||||
file \
|
||||
&& rm -rf /var/cache/apk/*
|
||||
|
||||
# Create build user (abuild requires non-root)
|
||||
RUN adduser -D -G abuild builder \
|
||||
&& echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers \
|
||||
&& mkdir -p /var/cache/distfiles \
|
||||
&& chown -R builder:abuild /var/cache/distfiles
|
||||
|
||||
# Setup abuild
|
||||
USER builder
|
||||
WORKDIR /home/builder
|
||||
|
||||
# Generate abuild keys
|
||||
RUN abuild-keygen -a -i -n
|
||||
|
||||
# Copy normalization and build scripts
|
||||
COPY --chown=builder:abuild scripts/normalize.sh /usr/local/bin/normalize.sh
|
||||
COPY --chown=builder:abuild scripts/build.sh /usr/local/bin/build.sh
|
||||
COPY --chown=builder:abuild scripts/extract-functions.sh /usr/local/bin/extract-functions.sh
|
||||
|
||||
RUN chmod +x /usr/local/bin/*.sh
|
||||
|
||||
# Environment for reproducibility
|
||||
ENV TZ=UTC
|
||||
ENV LC_ALL=C.UTF-8
|
||||
ENV LANG=C.UTF-8
|
||||
|
||||
# Build output directory
|
||||
VOLUME /output
|
||||
WORKDIR /build
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/build.sh"]
|
||||
CMD ["--help"]
|
||||
Reference in New Issue
Block a user