docker: Move android into a unified image
authorJordan Petridis <jordan@centricular.com>
Mon, 26 Nov 2018 14:23:58 +0000 (16:23 +0200)
committerJordan Petridis <jordan@centricular.com>
Tue, 27 Nov 2018 14:07:57 +0000 (16:07 +0200)
.gitlab-ci.yml
docker/android/Dockerfile [new file with mode: 0644]
docker/android/android-create-toolchain.sh [moved from docker/build-base-images/android-create-toolchain.sh with 99% similarity]
docker/android/android-download-ndk.sh [moved from docker/build-base-images/android-download-ndk.sh with 99% similarity]
docker/android/cleanup.sh [new file with mode: 0644]
docker/android/prepare.sh [new file with mode: 0644]
docker/build-base-images/Dockerfile-ubuntu [deleted file]
docker/runtime-images/Dockerfile-ubuntu [deleted file]
gitlab/ci_template.yml

index 16635f9..3b08107 100644 (file)
@@ -1,7 +1,4 @@
 stages:
-  - "build runtime"
-  - "build base"
-  # Eventually will replace both of the above stages
   - "build docker"
   - "preparation"
   # Test just one basic build, if succeds procced to test the rest
@@ -88,29 +85,18 @@ fedora amd64 docker:
     changes:
       - 'docker/fedora/*'
 
-ubuntu amd64 run docker:
-  stage: "build runtime"
-  variables:
-    ARCH: "amd64"
-    TAG: "ubuntu-runtime"
-    CONTEXT_DIR: "docker/runtime-images/"
-    DOCKERFILE: "docker/runtime-images/Dockerfile-ubuntu"
-  extends: .base
-  only:
-    changes:
-      - 'docker/runtime-images/Dockerfile-ubuntu'
-
-ubuntu amd64 build docker:
-  stage: "build base"
+# Cross compile image
+android 28 amd64 docker:
+  stage: "build docker"
   variables:
     ARCH: "amd64"
-    TAG: "ubuntu-build"
-    CONTEXT_DIR: "docker/build-base-images/"
-    DOCKERFILE: "docker/build-base-images/Dockerfile-ubuntu"
+    TAG: "android_28"
+    CONTEXT_DIR: "docker/android/"
+    DOCKERFILE: "docker/android/Dockerfile"
   extends: .base
   only:
     changes:
-      - 'docker/build-base-images/Dockerfile-ubuntu'
+      - 'docker/android/*'
 
 include: "gitlab/ci_template.yml"
 
@@ -120,8 +106,11 @@ build fedora x86_64 local:
   stage: 'build'
   image: "${CI_REGISTRY_IMAGE}/amd64/fedora:latest"
 
-build ubuntu x86_64 local:
+build android 28 local:
   extends: '.build'
   variables:
-    MESON_ARGS: "${DEFAULT_MESON_ARGS} -Dlibav=disabled"
-  image: "${CI_REGISTRY_IMAGE}/amd64/ubuntu-build:latest"
+    MESON_ARGS: >
+      -Dbad=enabled
+      -Dbad:androidmedia=enabled
+      --cross-file /android_arm64_28.txt
+  image: "${CI_REGISTRY_IMAGE}/amd64/android_28:latest"
diff --git a/docker/android/Dockerfile b/docker/android/Dockerfile
new file mode 100644 (file)
index 0000000..67a2095
--- /dev/null
@@ -0,0 +1,8 @@
+FROM ubuntu:18.04
+
+COPY prepare.sh cleanup.sh android-download-ndk.sh android-create-toolchain.sh /root/
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN sh /root/prepare.sh && \
+    sh /root/cleanup.sh
similarity index 99%
rename from docker/build-base-images/android-create-toolchain.sh
rename to docker/android/android-create-toolchain.sh
index bf909b6..d15287d 100755 (executable)
@@ -19,7 +19,7 @@
 # Author: Xavier Claessens <xavier.claessens@collabora.com>
 #
 
-set -e
+set -eu
 
 arch=$1
 api=$2
similarity index 99%
rename from docker/build-base-images/android-download-ndk.sh
rename to docker/android/android-download-ndk.sh
index 0e07407..487b583 100755 (executable)
@@ -19,7 +19,7 @@
 # Author: Xavier Claessens <xavier.claessens@collabora.com>
 #
 
-set -e
+set -eu
 
 # Download Android NDK
 ANDROID_NDK_VERSION="r18b"
diff --git a/docker/android/cleanup.sh b/docker/android/cleanup.sh
new file mode 100644 (file)
index 0000000..33032b1
--- /dev/null
@@ -0,0 +1,5 @@
+set -eu
+
+echo "Removing apt cache"
+rm -R /root/*
+rm -R /var/lib/apt/ /var/log/apt/
diff --git a/docker/android/prepare.sh b/docker/android/prepare.sh
new file mode 100644 (file)
index 0000000..cf6a726
--- /dev/null
@@ -0,0 +1,41 @@
+set -eu
+
+# make source packages available in order to figure out build dependencies
+sed -i "s/# deb-src/deb-src/g" /etc/apt/sources.list
+
+apt update
+apt build-dep -y \
+    orc \
+    gstreamer1.0 \
+    gst-plugins-base1.0 \
+    gst-plugins-good1.0 \
+    gst-plugins-bad1.0 \
+    gst-plugins-ugly1.0 \
+    gst-libav1.0 \
+    gst-rtsp-server1.0 \
+    gst-python1.0 \
+    gstreamer-vaapi \
+    gstreamer-editing-services1.0
+
+apt install -y \
+    ccache \
+    gdb \
+    git \
+    xvfb \
+    python3-pip \
+    wget \
+    unzip
+
+pip3 install meson
+
+# Configure git for various usage
+git config --global user.email "gst-build@gstreamer.net"
+git config --global user.name "Gstbuild Runner"
+
+# Setup Android toolchain
+./root/android-download-ndk.sh
+./root/android-create-toolchain.sh arm64 28
+
+# get gst-build and make all subprojects available
+git clone git://anongit.freedesktop.org/gstreamer/gst-build '/gst-build/'
+cd '/gst-build/' && meson build/ && rm -rf build/
\ No newline at end of file
diff --git a/docker/build-base-images/Dockerfile-ubuntu b/docker/build-base-images/Dockerfile-ubuntu
deleted file mode 100644 (file)
index d2dfd72..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM registry.freedesktop.org/gstreamer/gst-ci/amd64/ubuntu-runtime
-
-# make source packages available in order to figure out build dependencies
-RUN  \
-    sed -i "s/# deb-src/deb-src/g" /etc/apt/sources.list && \
-    apt-get update && \
-    apt-get -y build-dep \
-    orc \
-    gstreamer1.0 \
-    gst-plugins-base1.0 \
-    gst-plugins-good1.0 \
-    gst-plugins-bad1.0 \
-    gst-plugins-ugly1.0 \
-    gst-libav1.0 \
-    gst-rtsp-server1.0 \
-    gst-python1.0 \
-    gstreamer-vaapi \
-    gstreamer-editing-services1.0 && \
-    apt-get -y install \
-    ccache \
-    gdb \
-    git \
-    xvfb \
-    python3-pip \
-    wget \
-    unzip
-
-RUN pip3 install meson
-
-ENV GST_BUILD_PATH="/gst-build/"
-
-# Configure git for various usage
-RUN git config --global user.email "gst-build@gstreamer.net" && git config --global user.name "Gstbuild Runner"
-
-# Setup Android toolchain
-COPY android-download-ndk.sh .
-COPY android-create-toolchain.sh .
-RUN ./android-download-ndk.sh
-RUN ./android-create-toolchain.sh arm64 28
-RUN rm -rf /android-ndk
-
-# get gst-build and make all subprojects available
-RUN git clone git://anongit.freedesktop.org/gstreamer/gst-build $GST_BUILD_PATH && \
-    cd $GST_BUILD_PATH && \
-    meson build/ && rm -rf build/
\ No newline at end of file
diff --git a/docker/runtime-images/Dockerfile-ubuntu b/docker/runtime-images/Dockerfile-ubuntu
deleted file mode 100644 (file)
index 6d1809f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-FROM ubuntu:18.04
-
-ENV DEBIAN_FRONTEND=noninteractive
-
-# upgrade and install all runtime dependencies for gstreamer
-RUN apt-get update && \
-    apt-get -y upgrade && \
-    apt-get -y install --no-install-recommends\
-        gstreamer1.0-libav \
-       gstreamer1.0-plugins-bad \
-       gstreamer1.0-plugins-bad-faad \
-       gstreamer1.0-plugins-bad-videoparsers \
-       gstreamer1.0-plugins-ugly \
-       gstreamer1.0-plugins-ugly-amr \
-       gstreamer1.0-rtsp \
-       gstreamer1.0-alsa \
-       gstreamer1.0-plugins-base \
-       gstreamer1.0-plugins-good \
-       gstreamer1.0-pulseaudio \
-       gstreamer1.0-x \
-       libgstreamer-plugins-base1.0-0 \
-       libgstreamer1.0
index ebbea4a..8121f1f 100644 (file)
@@ -83,3 +83,5 @@ build android arm64 api28:
       -Dbad=enabled
       -Dbad:androidmedia=enabled
       --cross-file /android_arm64_28.txt
+  before_script:
+    - cat /android_arm64_28.txt