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