Skip to content

Commit adc72ef

Browse files
authored
Moved docker images (#229)
1 parent 0f13b6e commit adc72ef

31 files changed

+1773
-0
lines changed

docker/.dockerignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Dockerfile*

docker/android/Dockerfile-24.0.3

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# Version: 20220721
2+
# Image name: quay.io/opencv-ci/opencv-androidsdk-24
3+
# For 3.4 branch
4+
5+
FROM ubuntu:20.04
6+
7+
ARG ANT_VERSION=1.10.12
8+
ARG ANDROID_BUILD_TOOLS_VERSION=24.0.3
9+
ARG ANDROID_PLATFORM_VERSION=android-21
10+
ARG ANDROID_PLATFORM_VERSION_TEST1=android-14
11+
ARG ANDROID_PLATFORM_VERSION_TEST2=android-17
12+
ARG ANDROID_TOOLS_ARCHIVE=tools_r25.2.5-linux.zip
13+
ARG NDK_VERSION=r10e
14+
ARG CMAKE_VERSION=3.6.4111459
15+
16+
USER root
17+
18+
ENV DEBIAN_FRONTEND noninteractive
19+
20+
RUN \
21+
apt-get update && \
22+
apt-get install -y --no-install-recommends \
23+
software-properties-common \
24+
build-essential ccache ninja-build \
25+
python3 python3-pip curl zip unzip file \
26+
openjdk-8-jdk openjdk-8-jre libncurses5 \
27+
&& \
28+
add-apt-repository ppa:git-core/ppa && \
29+
apt-get install -y --no-install-recommends git && \
30+
rm -rf /var/lib/apt/lists/*
31+
32+
RUN \
33+
dpkg --add-architecture i386 && \
34+
apt-get update && \
35+
apt-get install -y --no-install-recommends \
36+
libncurses5:i386 libstdc++6:i386 zlib1g:i386 \
37+
&& \
38+
rm -rf /var/lib/apt/lists/*
39+
40+
RUN curl -o /tmp/apache-ant-$ANT_VERSION-bin.zip https://downloads.apache.org/ant/binaries/apache-ant-$ANT_VERSION-bin.zip && \
41+
unzip -d /opt/ant /tmp/apache-ant-$ANT_VERSION-bin.zip && \
42+
rm /tmp/apache-ant-$ANT_VERSION-bin.zip
43+
44+
ENV ANDROID_HOME="/opt/android-sdk"
45+
46+
# find+chmod fixes permission issue for old tools package
47+
RUN cd ~ && mkdir $ANDROID_HOME .android \
48+
&& cd $ANDROID_HOME \
49+
&& curl -o sdk.zip "https://dl.google.com/android/repository/$ANDROID_TOOLS_ARCHIVE" \
50+
&& unzip sdk.zip \
51+
&& rm sdk.zip \
52+
&& find $ANDROID_HOME -executable -exec chmod a+rx {} \; \
53+
&& echo "y\n" > /tmp/yes \
54+
&& $ANDROID_HOME/tools/bin/sdkmanager "platform-tools" < /tmp/yes
55+
56+
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;$ANDROID_BUILD_TOOLS_VERSION" < /tmp/yes
57+
RUN $ANDROID_HOME/tools/bin/sdkmanager "platforms;$ANDROID_PLATFORM_VERSION" < /tmp/yes
58+
RUN $ANDROID_HOME/tools/bin/sdkmanager "platforms;$ANDROID_PLATFORM_VERSION_TEST1" < /tmp/yes
59+
RUN $ANDROID_HOME/tools/bin/sdkmanager "platforms;$ANDROID_PLATFORM_VERSION_TEST2" < /tmp/yes
60+
RUN $ANDROID_HOME/tools/bin/sdkmanager "cmake;$CMAKE_VERSION" < /tmp/yes
61+
62+
# find+chmod fixes permission issue for old ndk package
63+
RUN cd ~ && curl -o ndk.zip "https://dl.google.com/android/repository/android-ndk-$NDK_VERSION-linux-x86_64.zip" && \
64+
cd /opt/ && unzip ~/ndk.zip && rm ~/ndk.zip && \
65+
chmod -R a+r /opt/android-ndk-$NDK_VERSION && \
66+
find /opt/android-ndk-$NDK_VERSION -executable -exec chmod a+rx {} \;
67+
68+
# Self-hosted runner UID is 1000
69+
RUN useradd ci -m -s /bin/bash -G users --uid=1000
70+
USER ci
71+
72+
RUN git config --global --add safe.directory "*" && \
73+
git config --global user.email "opencv.ci" && \
74+
git config --global user.name "opencv.ci" && \
75+
git config --global pull.rebase false
76+
77+
ENV ANT_HOME=/opt/ant/apache-ant-$ANT_VERSION
78+
ENV ANDROID_HOME="/opt/android-sdk"
79+
ENV ANDROID_SDK="/opt/android-sdk"
80+
ENV ANDROID_NDK="/opt/android-ndk-$NDK_VERSION"
81+
ENV ANDROID_NDK_HOME="/opt/android-ndk-$NDK_VERSION"
82+
ENV PATH=$ANT_HOME/bin:$ANDROID_HOME/cmake/$CMAKE_VERSION/bin:$PATH
83+
84+
ENTRYPOINT bash

docker/android/Dockerfile-28.0.3

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Version: 20220721
2+
# Image name: quay.io/opencv-ci/opencv-androidsdk-28
3+
# For 4.x branch
4+
5+
FROM ubuntu:20.04
6+
7+
ARG GRADLE_VERSION=5.6.4
8+
ARG ANDROID_BUILD_TOOLS_VERSION=28.0.3
9+
ARG ANDROID_PLATFORM_VERSION=android-26
10+
ARG ANDROID_TOOLS_ARCHIVE=sdk-tools-linux-3859397.zip
11+
ARG NDK_VERSION=18.1.5063045
12+
ARG CMAKE_VERSION=3.6.4111459
13+
14+
USER root
15+
16+
ENV DEBIAN_FRONTEND noninteractive
17+
18+
RUN \
19+
apt-get update && \
20+
apt-get install -y --no-install-recommends \
21+
software-properties-common \
22+
build-essential ccache ninja-build \
23+
python3 python3-pip curl zip unzip file \
24+
openjdk-8-jdk openjdk-8-jre libncurses5 \
25+
&& \
26+
add-apt-repository ppa:git-core/ppa && \
27+
apt-get install -y --no-install-recommends git && \
28+
rm -rf /var/lib/apt/lists/*
29+
30+
RUN mkdir -p /opt/gradle && \
31+
curl -o /opt/gradle/gradle-$GRADLE_VERSION-bin.zip https://downloads.gradle-dn.com/distributions/gradle-$GRADLE_VERSION-bin.zip && \
32+
unzip -d /opt/gradle /opt/gradle/gradle-$GRADLE_VERSION-bin.zip
33+
34+
ENV ANDROID_HOME="/opt/android-sdk"
35+
36+
# find+chmod fixes permission issue for old tools package
37+
RUN cd ~ && mkdir $ANDROID_HOME .android \
38+
&& cd $ANDROID_HOME \
39+
&& curl -o sdk.zip "https://dl.google.com/android/repository/$ANDROID_TOOLS_ARCHIVE" \
40+
&& unzip sdk.zip \
41+
&& rm sdk.zip \
42+
&& find $ANDROID_HOME -executable -exec chmod a+rx {} \; \
43+
&& echo "y\n" > /tmp/yes \
44+
&& $ANDROID_HOME/tools/bin/sdkmanager "platform-tools" < /tmp/yes
45+
46+
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;$ANDROID_BUILD_TOOLS_VERSION" < /tmp/yes
47+
RUN $ANDROID_HOME/tools/bin/sdkmanager "platforms;$ANDROID_PLATFORM_VERSION" < /tmp/yes
48+
RUN $ANDROID_HOME/tools/bin/sdkmanager "ndk;$NDK_VERSION" < /tmp/yes
49+
RUN $ANDROID_HOME/tools/bin/sdkmanager "cmake;$CMAKE_VERSION" < /tmp/yes
50+
51+
# Self-hosted runner UID is 1000
52+
RUN useradd ci -m -s /bin/bash -G users --uid=1000
53+
USER ci
54+
55+
RUN git config --global --add safe.directory "*" && \
56+
git config --global user.email "opencv.ci" && \
57+
git config --global user.name "opencv.ci" && \
58+
git config --global pull.rebase false
59+
60+
ENV GRADLE_HOME=/opt/gradle/gradle-$GRADLE_VERSION
61+
ENV GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.workers.max=2"
62+
ENV ANDROID_HOME="/opt/android-sdk"
63+
ENV ANDROID_SDK="/opt/android-sdk"
64+
ENV ANDROID_NDK="/opt/android-sdk/ndk/$NDK_VERSION"
65+
ENV ANDROID_NDK_HOME="/opt/android-sdk/ndk/$NDK_VERSION"
66+
ENV PATH=$GRADLE_HOME/bin:$ANDROID_HOME/cmake/$CMAKE_VERSION/bin:$PATH
67+
68+
ENTRYPOINT bash

docker/android/Dockerfile-30.0.3

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Version: 20240213
2+
# Image name: quay.io/opencv-ci/opencv-androidsdk-30
3+
# For 4.x branch
4+
5+
FROM ubuntu:20.04
6+
7+
ARG GRADLE_VERSION=7.6.3
8+
ARG ANDROID_BUILD_TOOLS_VERSION=30.0.3
9+
ARG ANDROID_PLATFORM_VERSION=android-31
10+
ARG ANDROID_TOOLS_ARCHIVE=commandlinetools-linux-6858069_latest.zip
11+
ARG NDK_VERSION=25.2.9519653
12+
ARG CMAKE_VERSION=3.22.1
13+
14+
USER root
15+
16+
ENV DEBIAN_FRONTEND noninteractive
17+
18+
RUN \
19+
apt-get update && \
20+
apt-get install -y --no-install-recommends \
21+
software-properties-common \
22+
build-essential ccache ninja-build \
23+
python3 python3-pip curl zip unzip file \
24+
openjdk-8-jdk openjdk-17-jre libncurses5 \
25+
&& \
26+
add-apt-repository ppa:git-core/ppa && \
27+
apt-get install -y --no-install-recommends git && \
28+
rm -rf /var/lib/apt/lists/*
29+
30+
RUN mkdir -p /opt/gradle && \
31+
curl -L -o /opt/gradle/gradle-$GRADLE_VERSION-bin.zip https://services.gradle.org/distributions/gradle-$GRADLE_VERSION-bin.zip && \
32+
unzip -d /opt/gradle /opt/gradle/gradle-$GRADLE_VERSION-bin.zip
33+
34+
ENV ANDROID_HOME="/opt/android-sdk"
35+
36+
# find+chmod fixes permission issue for old tools package
37+
RUN cd ~ && mkdir $ANDROID_HOME .android tmp \
38+
&& cd tmp \
39+
&& curl -o sdk.zip "https://dl.google.com/android/repository/$ANDROID_TOOLS_ARCHIVE" \
40+
&& unzip sdk.zip \
41+
&& rm sdk.zip \
42+
&& find $ANDROID_HOME -executable -exec chmod a+rx {} \; \
43+
&& mkdir -p $ANDROID_HOME/cmdline-tools/latest \
44+
&& mv cmdline-tools/* $ANDROID_HOME/cmdline-tools/latest/ \
45+
&& yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"
46+
47+
RUN yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
48+
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "build-tools;$ANDROID_BUILD_TOOLS_VERSION"
49+
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platforms;$ANDROID_PLATFORM_VERSION"
50+
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "ndk;$NDK_VERSION"
51+
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "cmake;$CMAKE_VERSION"
52+
53+
# Self-hosted runner UID is 1000
54+
RUN useradd ci -m -s /bin/bash -G users --uid=1000
55+
USER ci
56+
57+
RUN git config --global --add safe.directory "*" && \
58+
git config --global user.email "opencv.ci" && \
59+
git config --global user.name "opencv.ci" && \
60+
git config --global pull.rebase false
61+
62+
ENV GRADLE_VERSION=$GRADLE_VERSION
63+
ENV GRADLE_HOME=/opt/gradle/gradle-$GRADLE_VERSION
64+
ENV GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.workers.max=2"
65+
ENV ANDROID_HOME="/opt/android-sdk"
66+
ENV ANDROID_SDK="/opt/android-sdk"
67+
ENV ANDROID_NDK="/opt/android-sdk/ndk/$NDK_VERSION"
68+
ENV ANDROID_NDK_HOME="/opt/android-sdk/ndk/$NDK_VERSION"
69+
ENV PATH=$GRADLE_HOME/bin:$ANDROID_HOME/cmake/$CMAKE_VERSION/bin:$PATH
70+
71+
# Run docker build from the root directory of the repository
72+
COPY scripts/warnings-handling.py /home/ci/scripts/warnings-handling.py
73+
74+
ENTRYPOINT bash

docker/android/Dockerfile-34.0.0

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Version: 20240917
2+
# Image name: quay.io/opencv-ci/opencv-androidsdk-34
3+
# For 4.x branch
4+
5+
FROM ubuntu:20.04
6+
7+
ARG GRADLE_VERSION=8.11.1
8+
ARG ANDROID_BUILD_TOOLS_VERSION=34.0.0
9+
ARG ANDROID_PLATFORM_VERSION=android-34
10+
ARG ANDROID_TOOLS_ARCHIVE=commandlinetools-linux-6858069_latest.zip
11+
ARG NDK_VERSION=26.3.11579264
12+
ARG CMAKE_VERSION=3.22.1
13+
14+
USER root
15+
16+
ENV DEBIAN_FRONTEND noninteractive
17+
18+
RUN \
19+
apt-get update && \
20+
apt-get install -y --no-install-recommends \
21+
software-properties-common \
22+
build-essential ccache ninja-build \
23+
python3 python3-pip curl zip unzip file \
24+
openjdk-17-jdk libncurses5 \
25+
&& \
26+
add-apt-repository ppa:git-core/ppa && \
27+
apt-get install -y --no-install-recommends git && \
28+
rm -rf /var/lib/apt/lists/*
29+
30+
RUN mkdir -p /opt/gradle && \
31+
curl -L -o /opt/gradle/gradle-$GRADLE_VERSION-bin.zip https://services.gradle.org/distributions/gradle-$GRADLE_VERSION-bin.zip && \
32+
unzip -d /opt/gradle /opt/gradle/gradle-$GRADLE_VERSION-bin.zip
33+
34+
ENV ANDROID_HOME="/opt/android-sdk"
35+
36+
# find+chmod fixes permission issue for old tools package
37+
RUN cd ~ && mkdir $ANDROID_HOME .android tmp \
38+
&& cd tmp \
39+
&& curl -o sdk.zip "https://dl.google.com/android/repository/$ANDROID_TOOLS_ARCHIVE" \
40+
&& unzip sdk.zip \
41+
&& rm sdk.zip \
42+
&& find $ANDROID_HOME -executable -exec chmod a+rx {} \; \
43+
&& mkdir -p $ANDROID_HOME/cmdline-tools/latest \
44+
&& mv cmdline-tools/* $ANDROID_HOME/cmdline-tools/latest/ \
45+
&& yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"
46+
47+
RUN yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
48+
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "build-tools;$ANDROID_BUILD_TOOLS_VERSION"
49+
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platforms;$ANDROID_PLATFORM_VERSION"
50+
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "ndk;$NDK_VERSION"
51+
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "cmake;$CMAKE_VERSION"
52+
53+
# Self-hosted runner UID is 1000
54+
RUN useradd ci -m -s /bin/bash -G users --uid=1000
55+
USER ci
56+
57+
RUN git config --global --add safe.directory "*" && \
58+
git config --global user.email "opencv.ci" && \
59+
git config --global user.name "opencv.ci" && \
60+
git config --global pull.rebase false
61+
62+
ENV GRADLE_VERSION=$GRADLE_VERSION
63+
ENV GRADLE_HOME=/opt/gradle/gradle-$GRADLE_VERSION
64+
ENV GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.workers.max=2"
65+
ENV ANDROID_HOME="/opt/android-sdk"
66+
ENV ANDROID_SDK="/opt/android-sdk"
67+
ENV ANDROID_NDK="/opt/android-sdk/ndk/$NDK_VERSION"
68+
ENV ANDROID_NDK_HOME="/opt/android-sdk/ndk/$NDK_VERSION"
69+
ENV PATH=$GRADLE_HOME/bin:$ANDROID_HOME/cmake/$CMAKE_VERSION/bin:$PATH
70+
71+
# Run docker build from the root directory of the repository
72+
COPY scripts/warnings-handling.py /home/ci/scripts/warnings-handling.py
73+
74+
ENTRYPOINT bash

docker/build.sh

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/bin/bash
2+
# Builds docker image using selected Dockerfile
3+
# Automatically tags it with iamgename and version found in the file header
4+
# Example:
5+
# ./build.sh riscv/Dockerfile-main
6+
7+
set -eu
8+
9+
if [ "$#" -ne 1 ]; then
10+
echo "Error: script requires exactly one argument."
11+
exit 1
12+
fi
13+
14+
DOCKERFILE=$1
15+
16+
if [ ! -f "${DOCKERFILE}" ]; then
17+
echo "File ${DOCKERFILE} does not exist!"
18+
exit 1
19+
fi
20+
21+
22+
IMAGE_NAME=$(grep "# Image name:" ${DOCKERFILE} | sed 's/# Image name: //')
23+
IMAGE_VERSION=$(grep "# Version:" ${DOCKERFILE} | sed 's/# Version: //')
24+
25+
if [ -z "${IMAGE_NAME}" ]; then
26+
echo "Image name not found in the file header!"
27+
exit 1
28+
fi
29+
30+
if [ -z "${IMAGE_VERSION}" ]; then
31+
echo "Version not found in the file header!"
32+
exit 1
33+
fi
34+
35+
echo "Context : $(pwd)"
36+
echo "Dockerfile: ${DOCKERFILE}"
37+
echo "Image : ${IMAGE_NAME}:${IMAGE_VERSION}"
38+
39+
docker build \
40+
-f "${DOCKERFILE}" \
41+
-t "${IMAGE_NAME}:${IMAGE_VERSION}" \
42+
.

0 commit comments

Comments
 (0)