shellspec/shellspec

View on GitHub
.dockerhub/Dockerfile

Summary

Maintainability
Test Coverage
# 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 alpine:3.12 as builder
ENV KCOV=v38 CXXFLAGS=-D__ptrace_request=int
WORKDIR /usr/local/src
RUN apk add --no-cache build-base cmake ninja python3 \
      binutils-dev curl-dev elfutils-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:kcov, shellspec:[VERSION]-kcov
# ======================================================================
FROM alpine:3.12 as kcov
RUN apk add --no-cache bash binutils-dev curl-dev elfutils-libelf
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+kcov" \
      org.opencontainers.image.description="Shellspec (Alpine based with Kcov)"

# ======================================================================
# Standard image (default)
#   TAG: shellspec:latest, shellspec:[VERSION]
# ======================================================================
FROM alpine:3.12 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" \
      org.opencontainers.image.description="Shellspec (Alpine based)"