From e0aa1cd978f978ed3ac90adaf8415b60ce039c79 Mon Sep 17 00:00:00 2001 From: Varac Date: Mon, 25 Sep 2017 16:52:04 +0200 Subject: Build docker images from CI --- .gitlab-ci.yml | 47 ++++++++++++++++++++++++--- .gitlab/build.sh | 24 ++++++++++++++ docker/android-emulator.dockerfile | 24 -------------- docker/android-emulator/Dockerfile | 24 ++++++++++++++ docker/android-ndk.dockerfile | 32 ------------------- docker/android-ndk/Dockerfile | 32 +++++++++++++++++++ docker/android-sdk.dockerfile | 65 -------------------------------------- docker/android-sdk/Dockerfile | 65 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 187 insertions(+), 126 deletions(-) create mode 100755 .gitlab/build.sh delete mode 100644 docker/android-emulator.dockerfile create mode 100644 docker/android-emulator/Dockerfile delete mode 100644 docker/android-ndk.dockerfile create mode 100644 docker/android-ndk/Dockerfile delete mode 100644 docker/android-sdk.dockerfile create mode 100644 docker/android-sdk/Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f8f92c8..a9e43504 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,15 +1,52 @@ -image: "0xacab.org:4567/leap/bitmask_android/android-ndk:latest" - +--- stages: + - docker_image_sdk + - docker_image_other - build -before_script: - - git submodule sync --recursive - - git submodule update --init --recursive +# When using dind, it's wise to use the overlayfs driver for +# improved performance. +variables: + DOCKER_DRIVER: overlay + +.job_template: &build_docker_image + image: 0xacab.org:4567/leap/docker/debian:stretch_amd64 + tags: + - docker-in-docker + services: + - docker:dind + script: + - docker --version + - docker info + - > + export LAST_COMMIT=$(curl -s --header "PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" https://0xacab.org/api/v4/projects/578/pipelines | + python -c "import sys, json; print json.load(sys.stdin)[1]['sha']") + - .gitlab/build.sh ${DOCKER_IMAGE} + +docker_image:sdk: + stage: docker_image_sdk + variables: + DOCKER_IMAGE: android-sdk + <<: *build_docker_image + +docker_image:ndk: + stage: docker_image_other + variables: + DOCKER_IMAGE: android-ndk + <<: *build_docker_image + +docker_image:emulator: + stage: docker_image_other + variables: + DOCKER_IMAGE: android-emulator + <<: *build_docker_image build: + image: "0xacab.org:4567/leap/bitmask_android/android-ndk:latest" stage: build script: + - git submodule sync --recursive + - git submodule update --init --recursive - ./gradlew assembleDebug artifacts: paths: diff --git a/.gitlab/build.sh b/.gitlab/build.sh new file mode 100755 index 00000000..cc63075d --- /dev/null +++ b/.gitlab/build.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# Build script for the gitlab ci. +# +# usage: build.sh DIR [TAG] +# +# Will run docker build in DIR with DIR/Dockerfile or +# DIR/TAG.dockerfile if TAG is given. +# +# Assumes CI specific environment variables to be set: +# CI_REGISTRY_IMAGE +# LAST_COMMIT (fetched from the gitlab api in before_script hook) +# + +DIR=$1 +TAG=${2:-latest} +DOCKERFILE=docker/${DIR}/${2:-Dockerfile}${2:+.dockerfile} +TARGET=${CI_REGISTRY_IMAGE}/${DIR}:${TAG} + +if git diff "$LAST_COMMIT" HEAD --name-only | egrep "($DOCKERFILE|^.gitlab)"; then + docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" "$CI_REGISTRY" + docker build -t "$TARGET" -f "$DOCKERFILE" docker/ + docker push "$TARGET" +fi diff --git a/docker/android-emulator.dockerfile b/docker/android-emulator.dockerfile deleted file mode 100644 index 0201312b..00000000 --- a/docker/android-emulator.dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -FROM 0xacab.org:4567/leap/bitmask_android/android-sdk:latest - -MAINTAINER LEAP Encryption Access Project -LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" Version="25" - -# ------------------------------------------------------ -# --- System Dependencies - -# ensure GL compatibility - -RUN apt-get update -qq -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mesa-utils -ENV ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 - -# ------------------------------------------------------ -# --- Install Android Emulator - -# Install Android SDK emulator package -RUN echo y | sdkmanager "emulator" - -# Install System Images for emulators -RUN echo y | sdkmanager "system-images;android-25;google_apis;x86_64" -RUN echo y | sdkmanager "system-images;android-24;google_apis;x86_64" -RUN echo y | sdkmanager "system-images;android-23;google_apis;x86_64" diff --git a/docker/android-emulator/Dockerfile b/docker/android-emulator/Dockerfile new file mode 100644 index 00000000..0201312b --- /dev/null +++ b/docker/android-emulator/Dockerfile @@ -0,0 +1,24 @@ +FROM 0xacab.org:4567/leap/bitmask_android/android-sdk:latest + +MAINTAINER LEAP Encryption Access Project +LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" Version="25" + +# ------------------------------------------------------ +# --- System Dependencies + +# ensure GL compatibility + +RUN apt-get update -qq +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mesa-utils +ENV ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 + +# ------------------------------------------------------ +# --- Install Android Emulator + +# Install Android SDK emulator package +RUN echo y | sdkmanager "emulator" + +# Install System Images for emulators +RUN echo y | sdkmanager "system-images;android-25;google_apis;x86_64" +RUN echo y | sdkmanager "system-images;android-24;google_apis;x86_64" +RUN echo y | sdkmanager "system-images;android-23;google_apis;x86_64" diff --git a/docker/android-ndk.dockerfile b/docker/android-ndk.dockerfile deleted file mode 100644 index 0a3eabfd..00000000 --- a/docker/android-ndk.dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM 0xacab.org:4567/leap/bitmask_android/android-sdk:latest - -MAINTAINER LEAP Encryption Access Project -LABEL Description="Android NDK image based on android-sdk baseimage" Vendor="LEAP" Version="r12b" - -# ------------------------------------------------------ -# --- Install System Dependencies - -RUN apt-get update -qq -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ - make gcc file lib32stdc++6 lib32z1 # JNI build dependencies w/ 32-bit compatible C libs - -# ------------------------------------------------------ -# --- Install Android NDK (for running C code) - -# NOTE(@aguestuser|4.23.17) -# We woud like to use te current version of Android NDK (r14b) but cannot -# due to pinned dependency on year-old version of `ics-openvpn` -# which has transitive dependency on `openssl` which will not compile with `clang` -# (starting in 13b, android ndk uses `clang` isntead of `gcc`) -# Upon rebasing onto to current HEAD of `ics-openvpn` and resolving conflicts, we -# should update to current version of `ndk`. - -ENV ANDROID_NDK_VERSION "r12b" -ENV ANDROID_NDK_HOME ${ANDROID_HOME}/android-ndk-${ANDROID_NDK_VERSION} -ENV ANDROID_NDK_URL http://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip - -RUN curl -L $ANDROID_NDK_URL -o ndk.zip \ - && unzip ndk.zip -d $ANDROID_HOME \ - && rm -rf ndk.zip - -ENV PATH ${PATH}:${ANDROID_NDK_HOME} diff --git a/docker/android-ndk/Dockerfile b/docker/android-ndk/Dockerfile new file mode 100644 index 00000000..0a3eabfd --- /dev/null +++ b/docker/android-ndk/Dockerfile @@ -0,0 +1,32 @@ +FROM 0xacab.org:4567/leap/bitmask_android/android-sdk:latest + +MAINTAINER LEAP Encryption Access Project +LABEL Description="Android NDK image based on android-sdk baseimage" Vendor="LEAP" Version="r12b" + +# ------------------------------------------------------ +# --- Install System Dependencies + +RUN apt-get update -qq +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ + make gcc file lib32stdc++6 lib32z1 # JNI build dependencies w/ 32-bit compatible C libs + +# ------------------------------------------------------ +# --- Install Android NDK (for running C code) + +# NOTE(@aguestuser|4.23.17) +# We woud like to use te current version of Android NDK (r14b) but cannot +# due to pinned dependency on year-old version of `ics-openvpn` +# which has transitive dependency on `openssl` which will not compile with `clang` +# (starting in 13b, android ndk uses `clang` isntead of `gcc`) +# Upon rebasing onto to current HEAD of `ics-openvpn` and resolving conflicts, we +# should update to current version of `ndk`. + +ENV ANDROID_NDK_VERSION "r12b" +ENV ANDROID_NDK_HOME ${ANDROID_HOME}/android-ndk-${ANDROID_NDK_VERSION} +ENV ANDROID_NDK_URL http://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip + +RUN curl -L $ANDROID_NDK_URL -o ndk.zip \ + && unzip ndk.zip -d $ANDROID_HOME \ + && rm -rf ndk.zip + +ENV PATH ${PATH}:${ANDROID_NDK_HOME} diff --git a/docker/android-sdk.dockerfile b/docker/android-sdk.dockerfile deleted file mode 100644 index 4044a7ec..00000000 --- a/docker/android-sdk.dockerfile +++ /dev/null @@ -1,65 +0,0 @@ -FROM debian:stretch - -MAINTAINER LEAP Encryption Access Project -LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" Version="25.2.5" - -# ------------------------------------------------------ -# --- Install System Dependencies - -RUN apt-get update -qq -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ - # the basics - curl unzip git locales \ - # java stuff - openjdk-8-jdk maven - -# ------------------------------------------------------ -# --- Set Locales - -# Generate All Locales -RUN cp /usr/share/i18n/SUPPORTED /etc/locale.gen -RUN locale-gen - -# Set Default Locale -RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 -ENV LANG en_US.UTF-8 - -# ------------------------------------------------------ -# --- Install Android SDK Tools - -ENV ANDROID_SDK_VERSION "25.2.5" -ENV ANDROID_HOME /opt/android-sdk-linux -ENV ANDROID_SDK_URL https://dl.google.com/android/repository/tools_r${ANDROID_SDK_VERSION}-linux.zip - -# Install SDK Tools -RUN curl -L $ANDROID_SDK_URL -o sdk-tools.zip \ - && unzip -q sdk-tools.zip -d $ANDROID_HOME \ - && rm -f sdk-tools.zip - -# Update PATH -ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools - -# ------------------------------------------------------ -# --- Install Android SDK Tools Packages - -# Install Platform Tools Package -RUN echo y | sdkmanager "platform-tools" # echo y to accept google licenses - -# Install Android Support Repositories -RUN sdkmanager "extras;android;m2repository" - -# Install Build Tools (Please keep in descending order) -RUN sdkmanager "build-tools;25.0.2" -RUN sdkmanager "build-tools;25.0.0" -RUN sdkmanager "build-tools;24.0.3" -RUN sdkmanager "build-tools;23.0.3" - -# Install Target SDK Packages (Please keep in descending order) -RUN sdkmanager "platforms;android-25" -RUN sdkmanager "platforms;android-24" -RUN sdkmanager "platforms;android-23" - -# ------------------------------------------------------ -# --- Cleanup - -RUN apt clean diff --git a/docker/android-sdk/Dockerfile b/docker/android-sdk/Dockerfile new file mode 100644 index 00000000..4044a7ec --- /dev/null +++ b/docker/android-sdk/Dockerfile @@ -0,0 +1,65 @@ +FROM debian:stretch + +MAINTAINER LEAP Encryption Access Project +LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" Version="25.2.5" + +# ------------------------------------------------------ +# --- Install System Dependencies + +RUN apt-get update -qq +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ + # the basics + curl unzip git locales \ + # java stuff + openjdk-8-jdk maven + +# ------------------------------------------------------ +# --- Set Locales + +# Generate All Locales +RUN cp /usr/share/i18n/SUPPORTED /etc/locale.gen +RUN locale-gen + +# Set Default Locale +RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 +ENV LANG en_US.UTF-8 + +# ------------------------------------------------------ +# --- Install Android SDK Tools + +ENV ANDROID_SDK_VERSION "25.2.5" +ENV ANDROID_HOME /opt/android-sdk-linux +ENV ANDROID_SDK_URL https://dl.google.com/android/repository/tools_r${ANDROID_SDK_VERSION}-linux.zip + +# Install SDK Tools +RUN curl -L $ANDROID_SDK_URL -o sdk-tools.zip \ + && unzip -q sdk-tools.zip -d $ANDROID_HOME \ + && rm -f sdk-tools.zip + +# Update PATH +ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools + +# ------------------------------------------------------ +# --- Install Android SDK Tools Packages + +# Install Platform Tools Package +RUN echo y | sdkmanager "platform-tools" # echo y to accept google licenses + +# Install Android Support Repositories +RUN sdkmanager "extras;android;m2repository" + +# Install Build Tools (Please keep in descending order) +RUN sdkmanager "build-tools;25.0.2" +RUN sdkmanager "build-tools;25.0.0" +RUN sdkmanager "build-tools;24.0.3" +RUN sdkmanager "build-tools;23.0.3" + +# Install Target SDK Packages (Please keep in descending order) +RUN sdkmanager "platforms;android-25" +RUN sdkmanager "platforms;android-24" +RUN sdkmanager "platforms;android-23" + +# ------------------------------------------------------ +# --- Cleanup + +RUN apt clean -- cgit v1.2.3