11FROM jenkins/inbound-agent:alpine as jnlp
22
3- FROM jenkins/agent:latest-jdk11
4-
53ARG version
64LABEL Description="This is a base image, which allows connecting Jenkins agents via JNLP protocols" Vendor="Jenkins project" Version="$version"
75
@@ -14,53 +12,66 @@ COPY --from=jnlp /usr/local/bin/jenkins-agent /usr/local/bin/jenkins-agent
1412RUN chmod +x /usr/local/bin/jenkins-agent && \
1513 ln -s /usr/local/bin/jenkins-agent /usr/local/bin/jenkins-slave
1614
15+ # FYI reduce RUN calls -> minimize image sizes, avoid creating layers with unnecessary cached files
16+
17+ RUN apt-get update && \
18+ apt-get upgrade -y && \
19+ apt-get install -y --no-install-recommends curl gcc g++ gnupg unixodbc-dev openssl git && \
20+ apt-get install -y software-properties-common ca-certificates && \
21+ apt-get install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libssl-dev libreadline-dev libffi-dev wget libbz2-dev libsqlite3-dev && \
22+ update-ca-certificates
23+
1724# For maven install issue -> "error: error creating symbolic link '/usr/share/man/man1/mvn.1.gz.dpkg-tmp': No such file or directory"
1825RUN mkdir -p /usr/share/man/man1
1926
20- RUN apt-get update && apt-get install -y \
21- unzip \
22- curl \
27+ RUN apt-get install -y \
2328 rsync \
24- wget \
29+ unzip \
30+ tar \
2531 gradle \
26- maven \
27- python3 \
28- python3-pip \
29- python3-venv \
30- git \
31- tar
32-
33- # "fix" pips -> error: externally-managed-environment
34- ENV PIP_BREAK_SYSTEM_PACKAGES 1
35-
36- RUN pip3 install mkdocs
37- # backstage compat
38- RUN pip3 install mkdocs-techdocs-core
39-
40- # simplify doc generation, https://github.com/lukasgeiter/mkdocs-awesome-pages-plugin
41- RUN pip3 install mkdocs-awesome-pages-plugin
42-
43- # showing date created and updated on every page, https://github.com/timvink/mkdocs-git-revision-date-localized-plugin
44- RUN pip3 install mkdocs-git-revision-date-localized-plugin
32+ maven
33+
34+ # python
35+ ENV PY_VERSION=3.9.18
36+ RUN mkdir /python && cd /python && \
37+ wget "https://www.python.org/ftp/python/${PY_VERSION}/Python-${PY_VERSION}.tgz" && \
38+ tar -zxvf "Python-${PY_VERSION}.tgz" && \
39+ cd "Python-${PY_VERSION}" && \
40+ ls -lhR && \
41+ ./configure --enable-optimizations && \
42+ make install && \
43+ rm -rf /python
44+
45+ # mkdocs
46+ # mkdocs-techdocs-core - backstage compat
47+ # simplify doc generation, https://github.com/lukasgeiter/mkdocs-awesome-pages-plugin
48+ # showing date created and updated on every page, https://github.com/timvink/mkdocs-git-revision-date-localized-plugin
49+ RUN pip3 install \
50+ mkdocs \
51+ mkdocs-techdocs-core \
52+ mkdocs-awesome-pages-plugin \
53+ mkdocs-git-revision-date-localized-plugin
4554
4655# plantuml
4756ENV PLANTUML_VERSION=1.2023.2
48- RUN apt-get update && apt-get install -y \
57+ RUN apt-get install -y \
4958 graphviz \
5059 fontconfig
51- RUN wget "https://github.com/plantuml/plantuml/releases/download/v${PLANTUML_VERSION}/plantuml-${PLANTUML_VERSION}.jar" -O plantuml.jar
52- RUN cp plantuml.jar /usr/local/bin/plantuml.jar
53- RUN echo "#!/usr/bin/env bash\n\n java -Djava.awt.headless=true -jar /usr/local/bin/plantuml.jar -stdrpt:1 \$ @" | tee -a /usr/local/bin/plantuml
54- RUN chmod +x /usr/local/bin/plantuml.jar && chmod +x /usr/local/bin/plantuml
60+ RUN wget "https://github.com/plantuml/plantuml/releases/download/v${PLANTUML_VERSION}/plantuml-${PLANTUML_VERSION}.jar" -O plantuml.jar && \
61+ cp plantuml.jar /usr/local/bin/plantuml.jar && \
62+ echo "#!/usr/bin/env bash\n\n java -Djava.awt.headless=true -jar /usr/local/bin/plantuml.jar -stdrpt:1 \$ @" | tee -a /usr/local/bin/plantuml && \
63+ chmod +x /usr/local/bin/plantuml.jar && \
64+ chmod +x /usr/local/bin/plantuml
5565
5666# GitVersion
57- RUN wget https://github.com/GitTools/GitVersion/releases/download/5.12.0/gitversion-linux-x64-5.12.0.tar.gz
58- RUN tar -xvf gitversion-linux-x64-5.12.0.tar.gz
59- RUN mv gitversion /usr/local/bin
60- RUN chmod +x /usr/local/bin/gitversion
67+ ENV GIT_VERSION=5.12.0
68+ RUN wget "https://github.com/GitTools/GitVersion/releases/download/${GIT_VERSION}/gitversion-linux-x64-${GIT_VERSION}.tar.gz" && \
69+ tar -xvf "gitversion-linux-x64-${GIT_VERSION}.tar.gz" && \
70+ mv gitversion /usr/local/bin && \
71+ chmod +x /usr/local/bin/gitversion && \
72+ rm "gitversion-linux-x64-${GIT_VERSION}.tar.gz"
6173
6274# Dependencies to execute Android builds
63- RUN apt-get update -qq
6475RUN dpkg --add-architecture i386 && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
6576 libc6:i386 \
6677 libgcc1:i386 \
@@ -73,12 +84,16 @@ SHELL ["/bin/bash", "-c"]
7384ENV ANDROID_HOME /opt/sdk
7485ENV ANDROID_SDK_ROOT /opt/sdk
7586
76- RUN mkdir -p ${ANDROID_SDK_ROOT}
77- RUN chmod -Rf 777 ${ANDROID_SDK_ROOT}
78- RUN chown -Rf 1000:1000 ${ANDROID_SDK_ROOT}
79- RUN cd ${ANDROID_SDK_ROOT} && wget https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip -O sdk-tools.zip
80- RUN cd ${ANDROID_SDK_ROOT} && mkdir tmp && unzip sdk-tools.zip -d tmp && rm sdk-tools.zip
81- RUN cd ${ANDROID_SDK_ROOT} && mkdir -p cmdline-tools/latest && mv tmp/cmdline-tools/* cmdline-tools/latest
87+ RUN mkdir -p ${ANDROID_SDK_ROOT} && \
88+ chmod -Rf 777 ${ANDROID_SDK_ROOT} && \
89+ chown -Rf 1000:1000 ${ANDROID_SDK_ROOT} && \
90+ cd ${ANDROID_SDK_ROOT} && \
91+ wget https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip -O sdk-tools.zip && \
92+ mkdir tmp && \
93+ unzip sdk-tools.zip -d tmp && \
94+ rm sdk-tools.zip && \
95+ mkdir -p cmdline-tools/latest && \
96+ mv tmp/cmdline-tools/* cmdline-tools/latest
8297
8398ENV PATH ${PATH}:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin
8499
0 commit comments