Skip to content
Snippets Groups Projects
Verified Commit ef96e016 authored by micah's avatar micah :speech_balloon:
Browse files

Auto build/push docker (see platform#8755).

When the docker files in the docker directory are changed, the docker
build CI stage is triggered to build the docker image and push it to the
android container registry.

This is part of an effort to move all the docker images into their own
project's container registry, and to build/provide them
automatically (see platform#8755).

This is accomplished by the following:

 * added the necessary overlay DOCKER_DRIVER variable to .gitlab-ci.yml
 * added docker stage build jobs for each dockerfile, with docker:dind service enabled
 * added LEAP_CODE_O_MATIC_PRIVATE_TOKEN to project
 * docker push the resulting image to android container registry

Note: until https://gitlab.com/gitlab-org/gitlab-ce/issues/19813 is
resolved, we have to use this method. This means that the docker stage
jobs will run on each push, but they are designed to quickly determine
if they should continue to do the builds, thus making the jobs succeed
without re-building the images, unless necessary.
parent 59985587
Branches feat/dind
No related tags found
No related merge requests found
Pipeline #
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
......@@ -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
......
......@@ -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`)
......
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 \
# 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
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment