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