.dockerhub/Dockerfile.debian
# Build two images with Automated Builds using Docker Hub hooks.
# See https://github.com/shellspec/shellspec/tree/master/.dockerhub/hooks
# ======================================================================
# source code
# ======================================================================
FROM scratch as source
COPY shellspec LICENSE /opt/shellspec/
COPY lib /opt/shellspec/lib
COPY libexec /opt/shellspec/libexec
# ======================================================================
# Kcov builder
# ======================================================================
FROM debian:10 AS builder
ENV KCOV=v38 DEBIAN_FRONTEND=noninteractive DEBCONF_NOWARNINGS=yes
WORKDIR /usr/local/src
RUN apt-get update && apt-get install -y \
build-essential cmake ninja-build python3 wget \
binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev
RUN wget -q https://github.com/SimonKagstrom/kcov/archive/$KCOV.tar.gz
RUN tar xzf $KCOV.tar.gz -C ./ --strip-components 1
RUN mkdir build && cd build \
&& cmake -G Ninja .. && cmake --build . --target install
# ======================================================================
# Kcov image
# TAG: shellspec-debian:kcov, shellspec-debian:[VERSION]-kcov
# ======================================================================
FROM debian:10 as kcov
RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NOWARNINGS=yes \
&& apt-get update && apt-get install -y binutils libcurl4 zlib1g libdw1 \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/bin/kcov* /usr/local/bin/
COPY --from=builder /usr/local/share/doc/kcov /usr/local/share/doc/kcov
COPY --from=source /opt/shellspec /opt/shellspec
COPY .dockerhub/shellspec-docker-entrypoint.sh /shellspec-docker
ENV PATH /opt/shellspec/:$PATH
WORKDIR /src
ENTRYPOINT [ "shellspec" ]
ARG CREATED
ARG AUTHORS
ARG VERSION
ARG REVISION
ARG REFNAME
LABEL org.opencontainers.image.created=$CREATED \
org.opencontainers.image.authors=$AUTHORS \
org.opencontainers.image.url="https://shellspec.info/" \
org.opencontainers.image.documentation="https://github.com/shellspec/shellspec" \
org.opencontainers.image.source="https://github.com/shellspec/shellspec.git" \
org.opencontainers.image.version=$VERSION \
org.opencontainers.image.revision=$REVISION \
org.opencontainers.image.vendor="shellspec" \
org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.ref.name=$REFNAME \
org.opencontainers.image.title="shellspec-debian+kcov" \
org.opencontainers.image.description="Shellspec (Debian based with Kcov)"
# ======================================================================
# Standard image (default)
# TAG: shellspec-debian:latest, shellspec-debian:[VERSION]
# ======================================================================
FROM debian:10 as standard
COPY --from=source /opt/shellspec /opt/shellspec
COPY .dockerhub/shellspec-docker-entrypoint.sh /shellspec-docker
ENV PATH /opt/shellspec/:$PATH
WORKDIR /src
ENTRYPOINT [ "shellspec" ]
ARG CREATED
ARG AUTHORS
ARG VERSION
ARG REVISION
ARG REFNAME
LABEL org.opencontainers.image.created=$CREATED \
org.opencontainers.image.authors=$AUTHORS \
org.opencontainers.image.url="https://shellspec.info/" \
org.opencontainers.image.documentation="https://github.com/shellspec/shellspec" \
org.opencontainers.image.source="https://github.com/shellspec/shellspec.git" \
org.opencontainers.image.version=$VERSION \
org.opencontainers.image.revision=$REVISION \
org.opencontainers.image.vendor="shellspec" \
org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.ref.name=$REFNAME \
org.opencontainers.image.title="shellspec-debian" \
org.opencontainers.image.description="Shellspec (Debian based)"