Docker: Add dockerfile for Linux build environment.
- Dockerfile with getDependencies.sh
- Pipeline stages for Docker lint, build and promote
diff --git a/docker/dockerfile b/docker/dockerfile
new file mode 100644
index 0000000..4ea6a2b
--- /dev/null
+++ b/docker/dockerfile
@@ -0,0 +1,106 @@
+# Due to bandwidth limitation, we need to keep the base image into our
+# Artifactory Docker Registry. Because we have more than one registry,
+# we need to set during build time which Artifactory Docker Registry to use.
+ARG DOCKER_REGISTRY
+FROM ${DOCKER_REGISTRY}/ubuntu:focal
+
+# jenkins user needs to be present to work on CI
+# User 1000 for Kubernetes
+RUN useradd -u 1000 -U -m -c Jenkins jenkins
+
+# install packages from official Ubuntu repo
+ENV DEBIAN_FRONTEND=noninteractive
+RUN apt-get update && \
+    apt-get install --no-install-recommends -y \
+        bc=1.07.1-2build1 \
+        build-essential=12.8ubuntu1.1 \
+        curl=7.68.0-1ubuntu2.5 \
+        dos2unix=7.4.0-2 \
+        git=1:2.25.1-1ubuntu3.1 \
+        lib32stdc++6=10.2.0-5ubuntu1~20.04 \
+        mscgen=0.20-12 \
+        p7zip-full=16.02+dfsg-7build1 \
+        python3=3.8.2-0ubuntu2 \
+        python3-pip=20.0.2-5ubuntu1.3 \
+        tar=1.30+dfsg-7ubuntu0.20.04.1 \
+        unzip=6.0-25ubuntu1 \
+        wget=1.20.3-1ubuntu1 \
+        libxml2-utils=2.9.10+dfsg-5 \
+        zip=3.0-11build1 && \
+    apt-get autoremove -y && \
+    apt-get autoclean -y && \
+    rm -rf /var/lib/apt/lists/*
+
+# Create build ARGs for installer files & versions
+ARG ARMCC=ArmCompiler-5.06u7-linux.sh
+ARG ARMCLANG=ArmCompiler-6.16-linux-x86_64.sh
+ARG ARMCLANGLTM=ArmCompiler-6.6.4-linux-x86_64.sh
+ARG GCC=gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
+ARG DOXYGEN=doxygen_1.8.6-2_amd64.deb
+ARG FASTMODELS=fvp-11.12-linux-x86_64.tar.gz
+
+# Including dependency folder
+ARG DEPENDENCIESFOLDER=dependenciesFiles
+ARG TOOLS_PATH=/opt
+ARG INSTALLER_PATH=/tmp/dependenciesFiles
+RUN mkdir -p ${INSTALLER_PATH}
+COPY dependenciesFiles/ ${INSTALLER_PATH}
+
+# install & setup armcc
+RUN ${INSTALLER_PATH}/${ARMCC} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armcc
+ENV PATH=${PATH}:${TOOLS_PATH}/armcc/bin
+ENV CI_ARMCC5_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclang/bin
+
+# install & setup armclang
+RUN ${INSTALLER_PATH}/${ARMCLANG} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armclang
+ENV PATH=${PATH}:${TOOLS_PATH}/armclang/bin
+ENV CI_ARMCC6_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclang/bin
+
+# install & setup armclang ltm
+RUN ${INSTALLER_PATH}/${ARMCLANGLTM} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armclangltm
+ENV CI_ARMCC6LTM_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclangltm/bin
+
+# install & setup gcc
+RUN mkdir -p ${TOOLS_PATH}
+WORKDIR ${TOOLS_PATH}
+RUN tar -xvf ${INSTALLER_PATH}/${GCC}
+ENV PATH=${PATH}:${TOOLS_PATH}/gcc-arm-none-eabi-10-2020-q4-major/bin
+ENV CI_GCC_TOOLCHAIN_ROOT=${TOOLS_PATH}/gcc-arm-none-eabi-10-2020-q4-major/bin
+WORKDIR /
+
+# install fast models 11.12
+RUN mkdir -p ${TOOLS_PATH}/fvp/
+WORKDIR ${TOOLS_PATH}/fvp/
+RUN tar -xvf ${INSTALLER_PATH}/${FASTMODELS}
+ENV PATH=${PATH}:${TOOLS_PATH}/fvp
+WORKDIR /
+
+# install doxygen
+RUN dpkg -i ${INSTALLER_PATH}/${DOXYGEN}
+
+# install PackChk
+RUN cp ${INSTALLER_PATH}/PackChk /usr/local/bin/PackChk
+RUN chmod +x /usr/local/bin/PackChk
+
+# install Python requirements
+COPY requirements.txt ${INSTALLER_PATH}/
+RUN python3 -m pip install --no-cache-dir -r ${INSTALLER_PATH}/requirements.txt
+
+# install buildtools
+RUN python3 -m pip install --no-cache-dir -r ${INSTALLER_PATH}/buildtools/requirements.txt
+RUN mv ${INSTALLER_PATH}/buildtools ${TOOLS_PATH}
+COPY rtebuild /home/jenkins/.rtebuild
+COPY rtebuild /root/.rtebuild
+ENV PATH=${PATH}:${TOOLS_PATH}/buildtools
+
+# install python-matrix-runner
+# hadolint disable=DL3013
+RUN python3 -m pip install ${INSTALLER_PATH}/python-matrix-runner
+
+# set ARMLMD_LICENSE_FILE for ARM compilers
+ENV ARMLMD_LICENSE_FILE="7010@euhpc-lic-armlmd.euhpc.arm.com:7010@euhpc-lic03.euhpc.arm.com:7010@euhpc-lic05.euhpc.arm.com:7010@euhpc-lic07.euhpc.arm.com"
+
+# remove dependency folder
+RUN rm -rf ${INSTALLER_PATH}
+
+CMD ["bash"]
\ No newline at end of file