diff options
author | Micah Anderson <micah@riseup.net> | 2017-05-09 10:37:34 -0400 |
---|---|---|
committer | drebs <drebs@leap.se> | 2017-05-10 19:27:21 +0200 |
commit | 95f378a45ac3bb18a4589d1706685bb525b216d7 (patch) | |
tree | 2726ce878a32372781a0841db428e6d41825eac0 | |
parent | 09c9683cd6888fe7e54cfdd71ada9ace5fdf4fcc (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.yml | 27 | ||||
-rw-r--r-- | testing/docker/Dockerfile | 31 |
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 |