######## Pull alpine and Docker base image from jfrog for tools to be installed ########## 

FROM mcd.jfrog.io/brep-docker/docker:latest
FROM mcd.jfrog.io/brep-docker/alpine3.15.8:3.15.8

ARG KUBECTL_VERSION=1.17.4
ARG TERRAFORM_VERSION=0.15.5
ARG HELM_VERSION=3.2.1
ARG AWSCLI_VERSION=1.27.117
ARG BOTOCORE_VERSION=1.29.117
ARG S3TRANSFER_VERSION=0.6.0
ARG YAMALE_VERSION=2.0.1

ENV KUBECTL_VERSION=$KUBECTL_VERSION \
  TERRAFORM_VERSION=$TERRAFORM_VERSION \
  ANSIBLE_VERSION=$ANSIBLE_VERSION \
  HELM_VERSION=$HELM_VERSION \
  AWSCLI_VERSION=$AWSCLI_VERSION \
  BOTOCORE_VERSION=$BOTOCORE_VERSION \
  S3TRANSFER_VERSION=$S3TRANSFER_VERSION \
  YAMALE_VERSION=$YAMALE_VERSION

 

# Adding additional tools

RUN apk add --no-cache --upgrade git curl jq openssh bash libxml2-utils less mailcap unzip zip python3 py3-pip sudo gcc \
  && pip3 install docker-compose==1.23.2 \
  && apk --update add --virtual build-dependencies python3-dev libffi-dev openssl-dev build-base \
  && apk --update add nodejs npm make g++ ansible \
  && apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/community docker=20.10.16-r0 \
  && pip3 install --no-cache-dir --upgrade pip \
  && pip3 install --no-cache-dir --upgrade botocore==$BOTOCORE_VERSION s3transfer==$S3TRANSFER_VERSION awscli==$AWSCLI_VERSION yamale==$YAMALE_VERSION \
  && curl -s https://fluxcd.io/install.sh | sudo bash \
  && echo "@community http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
  && apk add github-cli@community \ 
  && apk add fastjar \
  && rm -rf /var/cache/apk/*

#### Install Buildkit tool , required to run Tests using DockerBuildkit ##############
COPY --from=docker/buildx-bin:latest /buildx /usr/libexec/docker/cli-plugins/docker-buildx
RUN docker buildx version

# Install npm packages needed for CI
RUN npm install -g @angular/cli


# Download Kubectl, Terraform & Helm
ADD https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl /tmp/kubectl-${KUBECTL_VERSION}
ADD https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip /tmp/terraform_${TERRAFORM_VERSION}_linux_amd64.zip
ADD https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz /tmp/helm-v${HELM_VERSION}-linux-amd64.tar.gz
WORKDIR /tmp

####### Clean the workspace ##########

RUN unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
  mv terraform /usr/local/bin/terraform && \
  mv kubectl-${KUBECTL_VERSION} /usr/local/bin/kubectl && \
  tar -zxvf helm-v${HELM_VERSION}-linux-amd64.tar.gz && \
  mv linux-amd64/helm /usr/local/bin/helm && \
  chmod +x /usr/local/bin/*
RUN rm -rf /tmp/*
WORKDIR /root
