blob: 66bcd9dd8b343a316e9f7ed36bb223fcfa6550e1 [file] [log] [blame]
Benjamin Copelande2772152020-06-17 11:54:56 +01001FROM ubuntu:bionic
2
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -05003ARG TOOLS_DIR=/home/buildslave/tools
4
5ENV ARMLMD_LICENSE_FILE=27000@ci.trustedfirmware.org
Benjamin Copelande2772152020-06-17 11:54:56 +01006ENV DEBIAN_FRONTEND=noninteractive
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -05007ENV PATH=$TOOLS_DIR/bin:${PATH}
Benjamin Copelande2772152020-06-17 11:54:56 +01008ENV PLANTUML_JAR_PATH=/usr/share/plantuml/plantuml.jar
9ENV PKG_DEPS="\
Mate Toth-Pal4e6f1012020-07-07 10:13:07 +020010 bison \
Benjamin Copelande2772152020-06-17 11:54:56 +010011 build-essential \
Leonardo Sandoval23c34d12020-10-15 12:20:59 -050012 clang-tools-6.0 \
Benjamin Copelande2772152020-06-17 11:54:56 +010013 curl \
14 default-jre \
15 device-tree-compiler \
16 doxygen \
Karl Zhangedefe662020-09-15 18:12:19 +080017 exuberant-ctags \
Mate Toth-Pal4e6f1012020-07-07 10:13:07 +020018 flex \
Benjamin Copeland08f7e242020-06-30 13:38:41 +010019 g++-multilib \
20 gcc-multilib \
Benjamin Copelande2772152020-06-17 11:54:56 +010021 git \
22 graphviz \
23 jq \
Karl Zhangedefe662020-09-15 18:12:19 +080024 lcov \
Benjamin Copelande2772152020-06-17 11:54:56 +010025 libffi-dev \
26 libssl-dev \
Leonardo Sandoval04851952020-10-15 12:05:12 -050027 libxml-libxml-perl \
Benjamin Copelande2772152020-06-17 11:54:56 +010028 openjdk-8-jdk \
29 openssh-server \
30 perl \
31 python \
32 python-psutil \
33 python3 \
34 python3-crypto \
35 python3-dev \
36 python3-psutil \
37 python3-pyasn1 \
38 srecord \
39 sudo \
40 tree \
41 unzip \
42 virtualenv \
43 wget \
44 zip \
45"
46
47# Can be overriden at build time
48ARG BUILDSLAVE_PASSWORD=buildslave
49ARG VERSION=3.28
50
51COPY requirements_*.txt /opt/
52COPY jenkins-slave /usr/local/bin/jenkins-slave
Benjamin Copelandf7991f22020-07-30 14:01:21 +010053COPY setup-sshd /usr/sbin/setup-sshd
Benjamin Copelande2772152020-06-17 11:54:56 +010054
55RUN set -e ;\
56 apt update -q=2 ;\
57 apt dist-upgrade -q=2 --yes ;\
58 apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} ;\
59 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash ;\
60 apt update -q=2 ;\
61 apt install -q=2 --yes --no-install-recommends git-lfs ;\
62 # Install Python requirements
63 curl -s https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py ;\
64 python2 /tmp/get-pip.py ;\
65 pip2 install --no-cache-dir -r /opt/requirements_python2.txt ;\
66 python3 /tmp/get-pip.py ;\
67 pip3 install --no-cache-dir -r /opt/requirements_python3.txt ;\
Benjamin Copelanda38e4972020-06-25 10:24:35 +010068 # Set Python 3 as default
69 ln -s -f /usr/bin/python3 /usr/bin/python ;\
Benjamin Copelande2772152020-06-17 11:54:56 +010070 # Setup buildslave user for Jenkins
71 useradd -m -s /bin/bash buildslave ;\
72 echo "buildslave:$BUILDSLAVE_PASSWORD" | chpasswd ;\
73 echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins ;\
74 chmod 0440 /etc/sudoers.d/jenkins ;\
75 mkdir -p /var/run/sshd /home/buildslave/tools ;\
76 # Install cppcheck
77 wget -q http://github.com/danmar/cppcheck/releases/download/1.81/cppcheck-1.81.tar.gz -O /tmp/cppcheck.tar.gz ;\
78 tar -xf /tmp/cppcheck.tar.gz -C /opt ;\
79 (cd /opt/cppcheck-*; make CFGDIR=/opt/cppcheck-1.81/cfg; make install; make clean) ;\
80 # Install PlantUML
81 curl --create-dirs -fsSLo ${PLANTUML_JAR_PATH} https://repo1.maven.org/maven2/net/sourceforge/plantuml/plantuml/1.2019.6/plantuml-1.2019.6.jar ;\
82 # Install Jenkins remoting
83 curl --create-dirs -fsSLo /usr/share/jenkins/slave.jar https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar ;\
Benjamin Copelande2772152020-06-17 11:54:56 +010084 # Install CMake
Karl Zhangf398da12020-09-08 10:29:46 +080085 curl --create-dirs -fsSLo /tmp/cmake-Linux-x86_64.tar.gz https://cmake.org/files/v3.15/cmake-3.15.0-Linux-x86_64.tar.gz ;\
Benjamin Copelande2772152020-06-17 11:54:56 +010086 tar -xf /tmp/cmake-Linux-x86_64.tar.gz -C /home/buildslave/tools --strip-components=1 ;\
87 # Fix permissions
88 chmod 0755 /usr/share/jenkins ;\
89 chmod 0644 /usr/share/jenkins/slave.jar ;\
90 chmod 0755 /usr/local/bin/jenkins-slave ;\
Benjamin Copeland28a11fd2020-08-10 11:48:47 +010091 chown -R buildslave:buildslave /home/buildslave/tools /usr/share/plantuml ;\
Benjamin Copelande2772152020-06-17 11:54:56 +010092 # Cleanup
93 apt clean ;\
94 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
95
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -050096## Latest toolchains, available in $PATH. There can be newer versions of toolchains at
97## upstream projects but these are latest for the docker image
98
99### Install GNU toolchain (arm-none-eabi)
100ARG GNU_GCC_ARM_VERSION="7-2018-q2-update"
101ARG GNU_GCC_ARM_TAR="gcc-arm-none-eabi-${GNU_GCC_ARM_VERSION}-linux.tar.bz2"
102ARG GNU_GCC_ARM_URL='https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2\
103?revision=bc2c96c0-14b5-4bb4-9f18-bceb4050fee7?product=GNU%20Arm%20Embedded%20Toolchain%20Downloads,64-bit,,Linux,7-2018-q2-update'
104
105RUN curl --create-dirs -fsSLo /tmp/${GNU_GCC_ARM_TAR} ${GNU_GCC_ARM_URL} ;\
106 tar -xf /tmp/${GNU_GCC_ARM_TAR} -C ${TOOLS_DIR} --strip-components=1 ;\
107 rm /tmp/${GNU_GCC_ARM_TAR}
108
109### Install GNU toolchain (aarch64-none-elf)
110ARG GNU_GCC_AARCH64_VERSION="9.2-2019.12"
111ARG GNU_GCC_AARCH64_TAR="gcc-arm-${GNU_GCC_AARCH64_VERSION}-x86_64-aarch64-none-elf.tar.xz"
112ARG GNU_GCC_AARCH64_URL="https://developer.arm.com/-/media/Files/downloads/gnu-a/$GNU_GCC_AARCH64_VERSION/binrel/${GNU_GCC_AARCH64_TAR}"
113
114RUN curl --create-dirs -fsSLo /tmp/${GNU_GCC_AARCH64_TAR} ${GNU_GCC_AARCH64_URL} ;\
115 tar -Jxf /tmp/${GNU_GCC_AARCH64_TAR} -C ${TOOLS_DIR} --strip-components=1 ;\
116 rm /tmp/${GNU_GCC_AARCH64_TAR}
117
118### Install Arm Clang (armclang)
119ARG ARM_CLANG_VERSION="6.13"
120ARG ARM_CLANG_TAR="DS500-BN-00026-r5p0-15rel0.tgz"
121ARG ARM_CLANG_URL="https://developer.arm.com/-/media/Files/downloads/compiler/DS500-BN-00026-r5p0-15rel0.tgz\
122?revision=6a961cf7-1d9a-4664-900b-11d20552dbc7?product=Download%20Arm%20Compiler,64-bit,,Linux,6.13"
123ARG ARM_CLANG_INSTALL_DIR="${TOOLS_DIR}/armclang"
124
125RUN curl --create-dirs -fsSLo /tmp/${ARM_CLANG_TAR} ${ARM_CLANG_URL} ;\
126 mkdir -p ${ARM_CLANG_INSTALL_DIR} ;\
127 tar -xzf /tmp/${ARM_CLANG_TAR} -C ${ARM_CLANG_INSTALL_DIR} ;\
128 ${ARM_CLANG_INSTALL_DIR}/install_x86_64.sh \
129 --no-interactive \
130 --i-agree-to-the-contained-eula \
131 -d ${TOOLS_DIR} ;\
132 rm -rf ${ARM_CLANG_INSTALL_DIR} /tmp/${ARM_CLANG_TAR}
133
Benjamin Copelandf7991f22020-07-30 14:01:21 +0100134EXPOSE 22
135ENTRYPOINT ["/usr/sbin/setup-sshd"]