summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2017-05-09 10:37:34 -0400
committerdrebs <drebs@leap.se>2017-05-10 19:27:21 +0200
commit95f378a45ac3bb18a4589d1706685bb525b216d7 (patch)
tree2726ce878a32372781a0841db428e6d41825eac0
parent09c9683cd6888fe7e54cfdd71ada9ace5fdf4fcc (diff)
[feat] Build/push docker (see leap/platform#8755).
When the testing/docker directory is changed, the `build_docker_image` CI job is triggered to build the docker image and push it to the soledad 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 leap/platform#8755). This is accomplished by the following: added the necessary overlay DOCKER_DRIVER variable to .gitlab-ci.yml added a build_docker_image job with docker:dind service enabled enabled container registry in soledad project added LEAP_CODE_O_MATIC_PRIVATE_TOKEN to project moved docker image from scripts:docker/soledad to soledad:testing/docker docker push gitlab-buildpackage:soledad to soledad container registry removed gitlab-buildpackage:soledad image and scripts/docker/soledad changed image in .gitlab-ci.yml to use new location Note: until https://gitlab.com/gitlab-org/gitlab-ce/issues/19813 is resolved, we have to use this method.
-rw-r--r--.gitlab-ci.yml27
-rw-r--r--testing/docker/Dockerfile31
2 files changed, 57 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cef9a965..2b6743a1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,9 +1,13 @@
stages:
- code-check
+ - build
- tests
- benchmark
-image: "0xacab.org:4567/leap/gitlab-buildpackage:soledad"
+image: 0xacab.org:4567/leap/soledad:latest
+
+variables:
+ DOCKER_DRIVER: overlay
# Cache a folder between builds.
# Tox sets it to be our pip cache.
@@ -50,3 +54,24 @@ benchmark:
# to an elasticsearch instance
- echo "addopts=$PYTEST_OPTS" >> pytest.ini && chmod 600 pytest.ini
- /usr/bin/unbuffer tox --recreate -e benchmark -- --couch-url http://couchdb:5984 -m 'not synchronous' | /usr/bin/ts -s
+
+build_docker_image:
+ image: 0xacab.org:4567/leap/soledad:latest
+ stage: build
+ 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/519/pipelines |
+ python -c "import sys, json; print json.load(sys.stdin)[1]['sha']")
+ script:
+ - >
+ if git diff $LAST_COMMIT HEAD --name-only|grep testing/docker; 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}:latest testing/docker
+ docker push ${CI_REGISTRY_IMAGE}:latest
+ fi
diff --git a/testing/docker/Dockerfile b/testing/docker/Dockerfile
new file mode 100644
index 00000000..3a1f8bcf
--- /dev/null
+++ b/testing/docker/Dockerfile
@@ -0,0 +1,31 @@
+# start with a fresh debian image
+# we use backports because of libsqlcipher-dev
+FROM 0xacab.org:4567/leap/gitlab-buildpackage:jessie_amd64
+
+RUN apt-get update
+RUN apt-get -y dist-upgrade
+
+# needed to build python twisted module
+RUN apt-get -y install --no-install-recommends libpython2.7-dev \
+ # add unbuffer and ts for timestamping
+ moreutils expect tcl8.6 \
+ # needed to build python cryptography module
+ libssl-dev libffi-dev \
+ # needed to build pysqlcipher
+ libsqlcipher-dev \
+ # needed to support keymanager
+ libsqlite3-dev \
+ # install pip, so later we can install tox
+ python-pip \
+ # used to show connection to couchdb during CI
+ curl \
+ # needed to build pysqlcipher module
+ build-essential
+
+# We need git from backports because it has
+# the "%cI: committer date, strict ISO 8601 format"
+# pretty format which is used by pytest-benchmark
+RUN apt-get -y install -t jessie-backports git
+
+RUN pip install -U pip
+RUN pip install tox