gitlab-build-images/Dockerfile.custom
2022-11-30 10:22:35 +01:00

134 lines
3.8 KiB
Docker

#
# The arguments in this file are configured in
# /scripts/custom-docker-build
#
ARG CUSTOM_BASE_IMAGE
FROM ${CUSTOM_BASE_IMAGE}
ARG BUILD_OS
ARG OS_VERSION
# TARGETARCH is automatically populated by buildx --platform argument
ARG TARGETARCH
ADD / /
RUN /scripts/install-essentials ${BUILD_OS}
ENV PATH $PATH:/usr/local/go/bin
ENV PATH /usr/local/cargo/bin:$PATH
# Ruby
ARG RUBY_VERSION
ARG RUBY_DOWNLOAD_SHA256
ARG BUNDLER_VERSION
ARG RUBYGEMS_VERSION
RUN if [ -n "$RUBY_VERSION" ]; then /scripts/install-ruby "$RUBY_VERSION" "$RUBY_DOWNLOAD_SHA256" "$BUNDLER_VERSION" "$RUBYGEMS_VERSION" && ruby --version; fi
# Git
ARG GIT_VERSION
ARG GIT_DOWNLOAD_URL
ARG GIT_DOWNLOAD_SHA256
RUN if [ -n "$GIT_VERSION" ]; then /scripts/install-pcre2 && pcre2-config --version; fi
RUN if [ -n "$GIT_VERSION" ]; then /scripts/install-git && git --version; fi
# Chrome
ARG CHROME_VERSION
RUN if [ -n "$CHROME_VERSION" ]; then /scripts/install-chrome "$CHROME_VERSION"; fi
# NodeJS and Yarn
ARG NODE_INSTALL_VERSION
ARG YARN_INSTALL_VERSION
RUN if [ -n "$NODE_INSTALL_VERSION" ] ; then /scripts/install-node "$NODE_INSTALL_VERSION" "$YARN_INSTALL_VERSION" && node --version && yarn --version; fi
# Golang
ARG INSTALL_GOLANG_VERSION
ARG GOLANG_DOWNLOAD_SHA256
RUN if [ -n "$INSTALL_GOLANG_VERSION" ] ; then /scripts/install-golang "${INSTALL_GOLANG_VERSION}" "${GOLANG_DOWNLOAD_SHA256}" && go version; fi
# Rust
ARG INSTALL_RUST_VERSION
RUN if [ -n "$INSTALL_RUST_VERSION" ] ; then /scripts/install-rust "${INSTALL_RUST_VERSION}" && rustc version; fi
# Git LFS (https://git-lfs.github.com/)
ARG LFS_VERSION
ARG LFS_DOWNLOAD_SHA256
RUN if [ -n "$LFS_VERSION" ]; then /scripts/install-lfs && git lfs --version; fi
# Postgres
ARG POSTGRES_VERSION
RUN if [ -n "$POSTGRES_VERSION" ] ; then /scripts/install-postgresql "$POSTGRES_VERSION"; fi
# GraphicsMagick
ARG GRAPHISMAGICK_VERSION
ARG GRAPHISMAGICK_DOWNLOAD_URL=https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/${GRAPHISMAGICK_VERSION}/GraphicsMagick-${GRAPHISMAGICK_VERSION}.tar.gz
ARG GRAPHISMAGICK_DOWNLOAD_SHA256
RUN if [ -n "$GRAPHISMAGICK_VERSION" ]; then /scripts/install-graphicsmagick && gm version; fi
# Docker
ARG DOCKER_VERSION
RUN if [ -n "$DOCKER_VERSION" ]; then /scripts/install-docker "$DOCKER_VERSION"; fi
# Docker buildx plugin
ARG BUILDX_VERSION
ARG BUILDX_DOWNLOAD_SHA256
RUN if [ -n "$BUILDX_VERSION" ]; then /scripts/install-buildx "$BUILDX_VERSION" "$BUILDX_DOWNLOAD_SHA256"; fi
# Bazelisk
ARG BAZELISK_VERSION
ARG BAZELISK_DOWNLOAD_SHA256
RUN if [ -n "$BAZELISK_VERSION" ] ; then /scripts/install-bazelisk "$BAZELISK_VERSION" "$BAZELISK_DOWNLOAD_SHA256"; fi
# Google-cloud-sdk
ARG GCLOUD_VERSION
RUN if [ -n "$GCLOUD_VERSION" ] ; then /scripts/install-gcloud "$GCLOUD_VERSION"; fi
# Kubectl
ARG KUBECTL_VERSION
ARG KUBECTL_DOWNLOAD_SHA256
RUN if [ -n "$KUBECTL_VERSION" ] ; then /scripts/install-kubectl "$KUBECTL_VERSION" "$KUBECTL_DOWNLOAD_SHA256"; fi
# Helm
ARG HELM_VERSION
ARG HELM_DOWNLOAD_SHA256
RUN if [ -n "$HELM_VERSION" ] ; then /scripts/install-helm "$HELM_VERSION" "$HELM_DOWNLOAD_SHA256"; fi
RUN /scripts/generate-locale
ENV LANG=C.UTF-8 \
LANGUAGE=C \
LC_ALL=C.UTF-8
RUN /scripts/validate-binaries-architecture
# Set as env variables all versions configured
ENV RUBY_VERSION=${RUBY_VERSION} \
RUBYGEMS_VERSION=${RUBYGEMS_VERSION} \
GIT_VERSION=${GIT_VERSION} \
CHROME_VERSION=${CHROME_VERSION} \
NODE_VERSION=${NODE_INSTALL_VERSION} \
YARN_VERSION=${YARN_INSTALL_VERSION} \
GOLANG_VERSION=${INSTALL_GOLANG_VERSION} \
RUST_VERSION=${INSTALL_RUST_VERSION} \
LFS_VERSION=${LFS_VERSION} \
POSTGRES_VERSION=${POSTGRES_VERSION} \
GRAPHISMAGICK_VERSION=${GRAPHISMAGICK_VERSION} \
DOCKER_VERSION=${DOCKER_VERSION} \
BAZELISK_VERSION=${BAZELISK_VERSION} \
GCLOUD_VERSION=${GCLOUD_VERSION} \
KUBECTL_VERSION=${KUBECTL_VERSION}