Skip to content

Commit f1f2e2e

Browse files
authored
fix(ANDROIDAST-159): use specific python version (3.9)
- download and install specific version of python 3.9 - osd seems to depend on 3.9 - refactor RUN commons, reduce final image size, smaller caches
1 parent 9f9a879 commit f1f2e2e

File tree

1 file changed

+56
-41
lines changed

1 file changed

+56
-41
lines changed

Dockerfile

Lines changed: 56 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
FROM jenkins/inbound-agent:alpine as jnlp
22

3-
FROM jenkins/agent:latest-jdk11
4-
53
ARG version
64
LABEL 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
1412
RUN 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"
1825
RUN 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
4756
ENV 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\njava -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\njava -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
6475
RUN 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"]
7384
ENV ANDROID_HOME /opt/sdk
7485
ENV 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

8398
ENV PATH ${PATH}:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin
8499

0 commit comments

Comments
 (0)