diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f8f92c853d08b754280ecbbf5f4043c65db603a..16136656884b33e1604ece1b82a9aa3252fa403f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,10 @@ -image: "0xacab.org:4567/leap/bitmask_android/android-ndk:latest" +image: 0xacab.org:4567/leap/bitmask_android/android-ndk:latest + +variables: + DOCKER_DRIVER: overlay stages: + - docker - build before_script: @@ -14,3 +18,68 @@ build: artifacts: paths: - app/build/outputs/ + + +build_emulator_image: + image: 0xacab.org:4567/leap/bitmask_android/android-sdk:latest + stage: docker + services: + - docker:dind + tags: + - docker-in-docker + before_script: + - > + 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']") + script: + - > + if git diff $LAST_COMMIT HEAD --name-only|grep docker/android-emulator.dockerfile; then + docker --version + docker info + docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY + docker build -t ${CI_REGISTRY_IMAGE}/android-emulator:latest -f docker/android-emulator.dockerfile docker + docker push ${CI_REGISTRY_IMAGE}/android-emulator:latest + fi + + +build_ndk_image: + image: 0xacab.org:4567/leap/bitmask_android/android-sdk:latest + stage: docker + services: + - docker:dind + tags: + - docker-in-docker + before_script: + - > + 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']") + script: + - > + if git diff $LAST_COMMIT HEAD --name-only|grep docker/android-ndk.dockerfile; then + docker --version + docker info + docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY + docker build -t ${CI_REGISTRY_IMAGE}/android-ndk:latest -f docker/android-ndk.dockerfile docker + docker push ${CI_REGISTRY_IMAGE}/android-ndk:latest + fi + +build_sdk_image: + image: 0xacab.org:4567/leap/bitmask_android/android-sdk:latest + stage: docker + services: + - docker:dind + tags: + - docker-in-docker + before_script: + - > + 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']") + script: + - > + if git diff $LAST_COMMIT HEAD --name-only|grep docker/android-sdk.dockerfile; then + docker --version + docker info + docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY + docker build -t ${CI_REGISTRY_IMAGE}/android-sdk:latest -f docker/android-sdk.dockerfile docker + docker push ${CI_REGISTRY_IMAGE}/android-sdk:latest + fi diff --git a/docker/android-emulator.dockerfile b/docker/android-emulator.dockerfile index 0201312bf60c133595ca1e2e2b3d14bd15767a42..7c2e0989080cba38a6b946c479c11f3f84e6186b 100644 --- a/docker/android-emulator.dockerfile +++ b/docker/android-emulator.dockerfile @@ -3,14 +3,26 @@ FROM 0xacab.org:4567/leap/bitmask_android/android-sdk:latest MAINTAINER LEAP Encryption Access Project <info@leap.se> LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" Version="25" +# Make sure debconf doesn't complain about lack of interactivity +ENV DEBIAN_FRONTEND noninteractive +# ensure GL compatibility +ENV ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 + # ------------------------------------------------------ # --- 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 +# Need docker package in order to do Docker-in-Docker (DIND) +RUN apt-get update -qq && \ + apt-get -y dist-upgrade && \ + apt-get -y install gnupg apt-transport-https +RUN echo 'deb https://apt.dockerproject.org/repo debian-stretch main'> /etc/apt/sources.list.d/docker.list && \ + curl -s https://apt.dockerproject.org/gpg | apt-key add - +RUN apt-get update -qq && \ + apt-get -y install docker-engine mesa-utils && \ + apt-get clean && \ + apt-get autoclean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # ------------------------------------------------------ # --- Install Android Emulator diff --git a/docker/android-ndk.dockerfile b/docker/android-ndk.dockerfile index 0a3eabfdab4cf94ab3646e2f146169ccd7180a1f..1e88cc2f9740371bd6f47e1f63a534fd3228fc00 100644 --- a/docker/android-ndk.dockerfile +++ b/docker/android-ndk.dockerfile @@ -3,18 +3,30 @@ FROM 0xacab.org:4567/leap/bitmask_android/android-sdk:latest MAINTAINER LEAP Encryption Access Project <info@leap.se> LABEL Description="Android NDK image based on android-sdk baseimage" Vendor="LEAP" Version="r12b" +# Make sure debconf doesn't complain about lack of interactivity +ENV DEBIAN_FRONTEND noninteractive + # ------------------------------------------------------ # --- 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 +# Need docker package in order to do Docker-in-Docker (DIND) +RUN apt-get update -qq && \ + apt-get -y dist-upgrade && \ + apt-get install -y gnupg apt-transport-https +RUN echo 'deb https://apt.dockerproject.org/repo debian-stretch main'> /etc/apt/sources.list.d/docker.list && \ + curl -s https://apt.dockerproject.org/gpg | apt-key add - +# JNI build dependencies w/ 32-bit compatible C libs +RUN apt-get update -qq && \ + apt-get -y install docker-engine make gcc file lib32stdc++6 lib32z1 && \ + apt-get clean && \ + apt-get autoclean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # ------------------------------------------------------ # --- 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 +# We would like to use the 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`) diff --git a/docker/android-sdk.dockerfile b/docker/android-sdk.dockerfile index 4044a7ec333df5c3c7bdffefdd2991bd11af584a..c7c317153239f5b3532e5c7eef32f29825432a08 100644 --- a/docker/android-sdk.dockerfile +++ b/docker/android-sdk.dockerfile @@ -1,4 +1,4 @@ -FROM debian:stretch +FROM 0xacab.org:4567/leap/docker/debian:stretch_amd64 MAINTAINER LEAP Encryption Access Project <info@leap.se> LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" Version="25.2.5" @@ -6,12 +6,24 @@ LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" # ------------------------------------------------------ # --- 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 +# Make sure debconf doesn't complain about lack of interactivity +ENV DEBIAN_FRONTEND noninteractive + +# Need docker package in order to do Docker-in-Docker (DIND) +RUN apt-get update -qq && \ + apt-get -y dist-upgrade && \ + apt-get -y install gnupg apt-transport-https +RUN echo 'deb https://apt.dockerproject.org/repo debian-stretch main'> /etc/apt/sources.list.d/docker.list && \ + curl -s https://apt.dockerproject.org/gpg | apt-key add - +RUN apt-get update -qq && \ + apt-get install -y docker-engine \ + # the basics + curl unzip git locales \ + # java stuff + openjdk-8-jdk maven && \ + apt-get clean && \ + apt-get autoclean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # ------------------------------------------------------ # --- Set Locales @@ -58,8 +70,3 @@ RUN sdkmanager "build-tools;23.0.3" RUN sdkmanager "platforms;android-25" RUN sdkmanager "platforms;android-24" RUN sdkmanager "platforms;android-23" - -# ------------------------------------------------------ -# --- Cleanup - -RUN apt clean