From 4d9d9c2d990bb18e538aa251b97ca6efcbb278c4 Mon Sep 17 00:00:00 2001 From: yuvipanda Date: Wed, 11 Jul 2018 10:02:07 -0700 Subject: [PATCH] Bake docker-ce into the base image Speeds up CI runs by quite a bit --- .circleci/base-image/Dockerfile | 22 ++++++++++++++++++++++ .circleci/base-image/README.rst | 16 ++++++++++++++++ .circleci/base-image/build.bash | 15 +++++++++++++++ .circleci/config.yml | 25 +------------------------ 4 files changed, 54 insertions(+), 24 deletions(-) create mode 100644 .circleci/base-image/Dockerfile create mode 100644 .circleci/base-image/README.rst create mode 100755 .circleci/base-image/build.bash diff --git a/.circleci/base-image/Dockerfile b/.circleci/base-image/Dockerfile new file mode 100644 index 0000000..3b096d1 --- /dev/null +++ b/.circleci/base-image/Dockerfile @@ -0,0 +1,22 @@ +FROM continuumio/miniconda3:4.5.4 + + +RUN apt-get update --yes + +RUN apt-get install --yes --no-install-recommends \ + apt-transport-https \ + ca-certificates \ + curl \ + gnupg2 \ + software-properties-common + +RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - + +RUN add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/debian \ + $(lsb_release -cs) \ + stable" + +RUN apt-get update --yes + +RUN apt-get install --yes docker-ce diff --git a/.circleci/base-image/README.rst b/.circleci/base-image/README.rst new file mode 100644 index 0000000..14d4a34 --- /dev/null +++ b/.circleci/base-image/README.rst @@ -0,0 +1,16 @@ +======================== +TLJH CircleCI Base Image +======================== + +Miniconda should be installed in the base CircleCI image for our unit tests. +Docker CE should be installed in the base CircleCI image for our integration tests. + +This image contains both, so we do not have to build it every single time. + +Updating the image +================== + +1. Make changes to the ``Dockerfile`` & commit it. +2. Run ``./build.bash`` from this directory. It'll build, tag & push the image with + the hash of the last commit that touched this directory. +3. Use the new image tag in the ``.circleci/config.yml`` file. diff --git a/.circleci/base-image/build.bash b/.circleci/base-image/build.bash new file mode 100755 index 0000000..baf1752 --- /dev/null +++ b/.circleci/base-image/build.bash @@ -0,0 +1,15 @@ +#!/bin/bash +set -euo pipefail + +# Very simple script to build and push images +# Should be replaced by chartpress or similar at some point +# Uses google container image builder for simplicity +IMAGE="jupyterhub/tljh-circleci-base-image" +TAG=$(git log -n1 --pretty="%h" .) +IMAGE_SPEC="${IMAGE}:${TAG}" + + +echo "Building and pushing ${IMAGE_SPEC}" +docker build -t ${IMAGE_SPEC} . +docker push ${IMAGE_SPEC} +echo "Built and pushed ${IMAGE_SPEC}" diff --git a/.circleci/config.yml b/.circleci/config.yml index 07908dc..9b3160f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 jobs: build: docker: - - image: continuumio/miniconda3:4.5.4 + - image: jupyterhub/tljh-circleci-base-image:6fe5372 working_directory: ~/repo @@ -34,29 +34,6 @@ jobs: # Run full installer test - setup_remote_docker - - run: - #FIXME: Bake this into the base image - name: install docker - command: | - apt-get update - - apt-get install --yes \ - apt-transport-https \ - ca-certificates \ - curl \ - gnupg2 \ - software-properties-common - - curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - - add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/debian \ - $(lsb_release -cs) \ - stable" - - apt-get update - - apt-get install --yes docker-ce - - run: name: build systemd image command: |