Commit 4d1557f9 authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Add a new build stage for producing working images

parent 44d86676
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ build:
  script:
  - docker build .
    --tag=${REPO}
    --target=scripts
    --build-arg BUILDKIT_INLINE_CACHE=1
    $(cache_arg)
  - docker push ${REPO}
+0 −5
Original line number Diff line number Diff line
@@ -25,11 +25,6 @@ repos:
    exclude_types: [markdown, plain-text]
    stages: [commit, manual]

- repo: https://github.com/pryorda/dockerfilelint-precommit-hooks
  rev: v0.1.0
  hooks:
  - id: dockerfilelint

- repo: https://github.com/jorisroovers/gitlint
  rev: v0.15.0
  hooks:
+51 −5
Original line number Diff line number Diff line
# syntax = docker/dockerfile:1.0-experimental
# syntax = docker/dockerfile:1.3-labs

FROM debian:buster-slim as collect
FROM debian:bullseye-slim as stage-scripts
COPY LICENCE.txt /stage/LICENCE.txt
COPY bootstrap-stage.bash /stage/scripts/bootstrap-stage
COPY collect-binaries.bash /stage/scripts/collect-binaries
@@ -9,7 +9,53 @@ COPY stage-useradd.bash /stage/scripts/stage-useradd
COPY translate-platform.bash /stage/scripts/translate-platform
RUN /stage/scripts/collect-binaries /bin/bash

FROM scratch
ENV PATH=/scripts:/bin
COPY --from=collect /stage /

FROM debian:bullseye-slim as stage-additional
COPY --from=stage-scripts /stage/scripts/collect-binaries /bin/collect-binaries
RUN apt update && apt install -y bash-builtins
SHELL ["/bin/bash", "-ceu"]
RUN <<-END_SCRIPT
/bin/collect-binaries \
    /usr/lib/bash/dirname \
    /usr/lib/bash/mkdir \
    /usr/lib/bash/mktemp \
    /usr/lib/bash/rm
tee >>/stage/bash.env <<-END_FILE
    enable -f /usr/lib/bash/dirname dirname
    enable -f /usr/lib/bash/mkdir mkdir
    enable -f /usr/lib/bash/mktemp mktemp
    enable -f /usr/lib/bash/rm rm
    mkdir -p /tmp
END_FILE
END_SCRIPT
RUN <<-END_SCRIPT
/bin/collect-binaries \
    /bin/cat \
    /bin/date \
    /bin/grep \
    /bin/sed \
    /bin/uname \
    /usr/bin/arch \
    /usr/bin/expr
END_SCRIPT

ADD https://git.savannah.gnu.org/cgit/config.git/plain/config.guess /stage/scripts/config.guess
ADD https://git.savannah.gnu.org/cgit/config.git/plain/config.sub /stage/scripts/config.sub
RUN chmod +x /stage/scripts/config.*


# Main image: contains only scripts and bash, so only basic behaviour is
# available, mostly just for viewing --help output and for fetching scripts into
# other images.
FROM scratch as scripts
ENV PATH=/scripts:/bin:/usr/bin
COPY --from=stage-scripts /stage /
ENTRYPOINT ["/bin/bash"]


# Working image: contains needed cmdline tools for running translate-platform
FROM scripts as additional
ENV BASH_ENV=/bash.env \
    CONFIG_GUESS=/scripts/config.guess \
    CONFIG_SUB=/scripts/config.sub
COPY --from=stage-additional /stage /