This is an automated email from the ASF dual-hosted git repository. spod pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cassandra-builds.git
The following commit(s) were added to refs/heads/master by this push: new 59169b2 Add Ubuntu 18.10 Java 11 dockerfile 59169b2 is described below commit 59169b24af35314eb0439961687cc5435008d949 Author: Stefan Podkowinski <s.podkowin...@gmail.com> AuthorDate: Thu Jan 3 08:57:21 2019 +0100 Add Ubuntu 18.10 Java 11 dockerfile --- docker/testing/README.md | 35 +++++++ docker/testing/ubuntu1810_j11.docker | 107 +++++++++++++++++++++ .../testing/ubuntu1810_j11_w_dependencies.docker | 37 +++++++ 3 files changed, 179 insertions(+) diff --git a/docker/testing/README.md b/docker/testing/README.md new file mode 100644 index 0000000..99a88e9 --- /dev/null +++ b/docker/testing/README.md @@ -0,0 +1,35 @@ +# Docker CI Testing + +Docker files in this directory are used to build images used by CircleCI. These are directly referenced in the `circle.yml` after publishing to dockerhub. There are two types of images: + +* Base image for Linux distribution to use for testing (e.g. `ubuntu1810_j11.docker`) +* Caching image that contains git sources, maven and ccm dependencies + +## Building Images + +Build images from the parent directory using the following commands. Change tag (`-t`) as needed (prefix and current date): + +Base image: + +`docker build -t spod/cassandra-testing-ubuntu1810:20180128 -t spod/cassandra-testing-ubuntu1810:latest -f testing/ubuntu1810_j11.docker testing/` + +Caching image: + +`docker build --no-cache -t spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306 -t spod/cassandra-testing-ubuntu1810-java11-w-dependencies:latest -f testing/ubuntu1810_j11_w_dependencies.docker testing/` + +Please make sure to always tag also by date, so we can go back to that version in case anything breaks after the next update! + +## Publishing Images + +We are using Docker Hub for storing published images. See [Quick Start Guide](https://docs.docker.com/docker-hub/) on how to setup docker. + +Push both image references: + +``` +docker push spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306 +docker push spod/cassandra-testing-ubuntu1810-java11-w-dependencies:latest +``` + +## Updating circleci.yml + +Check if the correct image is used in `.circleci/config-2_1.yml` by looking for the `- image:` value. It should either be set to the date dervived tag created above, or `:latest`. diff --git a/docker/testing/ubuntu1810_j11.docker b/docker/testing/ubuntu1810_j11.docker new file mode 100644 index 0000000..328cd31 --- /dev/null +++ b/docker/testing/ubuntu1810_j11.docker @@ -0,0 +1,107 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# base things off the latest LTS Ubuntu Release (18.04) +FROM ubuntu:18.10 +MAINTAINER Stefan Podkowinski <s.podkowin...@gmail.com> + +# install our python dependencies and some other stuff we need +# libev4 libev-dev are for the python driver + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y --no-install-recommends software-properties-common apt-utils vim + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y git-core python2.7 python3.6 python3.6-venv python3.6-dev python3-pip net-tools libev4 libev-dev wget gcc + +# solves warning: "jemalloc shared library could not be preloaded to speed up memory allocations" +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y --no-install-recommends libjemalloc2 + +# install dumb-init as minimal init system +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y dumb-init + +# generate locales for the standard en_US.UTF8 value we use for testing +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y locales && \ + locale-gen en_US.UTF-8 + +# as we only need the requirements.txt file from the dtest repo, let's just get it from GitHub as a raw asset +# so we can avoid needing to clone the entire repo just to get this file +ADD https://raw.githubusercontent.com/apache/cassandra-dtest/master/requirements.txt /opt +RUN chmod 0644 /opt/requirements.txt + +# now setup python via virtualenv with all of the python dependencies we need according to requirements.txt +RUN pip3 install virtualenv +RUN pip3 install --upgrade wheel + +# openjdk + ant +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y --no-install-recommends openjdk-8-jdk openjdk-11-jdk ant ant-optional + +# make Java 8 the default executable (we use to run all tests against Java 8) +RUN update-java-alternatives -s java-1.8.0-openjdk-amd64 + +# setup our user -- if we don't do this docker will default to root and Cassandra will fail to start +# as we appear to have a check that the user isn't starting Cassandra as root +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get install sudo && \ + adduser --disabled-password --gecos "" cassandra && \ + echo "cassandra ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/cassandra && \ + chmod 0440 /etc/sudoers.d/cassandra + +# fix up permissions on the cassandra home dir +RUN chown -R cassandra:cassandra /home/cassandra + +# switch to the cassandra user... we are all done running things as root +USER cassandra +ENV HOME /home/cassandra +WORKDIR /home/cassandra + +# Add environment variables for Ant and Java and add them to the PATH +RUN echo 'export ANT_HOME=/usr/share/ant' >> /home/cassandra/.bashrc && \ + echo 'export JAVA8_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> /home/cassandra/.bashrc && \ + echo 'export JAVA11_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> /home/cassandra/.bashrc && \ + echo 'export JAVA_HOME=$JAVA8_HOME' >> /home/cassandra/.bashrc + +# run pip commands and setup virtualenv (note we do this after we switch to cassandra user so we +# setup the virtualenv for the cassandrauser and not the root user by acident) +RUN virtualenv --python=python3.6 --no-site-packages env +RUN chmod +x env/bin/activate +RUN /bin/bash -c "source ~/env/bin/activate && pip3 install Cython && pip3 install -r /opt/requirements.txt && pip3 freeze --user" + +# we need to make SSH less strict to prevent various dtests from failing when they attempt to +# git clone a given commit/tag/etc +# upgrading node1 to github:apache/18cdd391ec27d16daf775f928902f5a421c415e3 +# g...@github.com:apache/cassandra.git github:apache/18cdd391ec27d16daf775f928902f5a421c415e3 +# 23:47:08,993 ccm INFO Cloning Cassandra... +# The authenticity of host 'github.com (192.30.253.112)' can't be established. +# RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. +# Are you sure you want to continue connecting (yes/no)? +RUN mkdir ~/.ssh +RUN echo 'Host *\n UserKnownHostsFile /dev/null\n StrictHostKeyChecking no' > ~/.ssh/config +RUN chown cassandra:cassandra ~/.ssh +RUN chown cassandra:cassandra ~/.ssh/config +RUN chmod 600 ~/.ssh/config + +# mark "/tmp" as a volume so it will get mounted as an ext4 mount and not +# the stupid aufs/CoW stuff that the actual docker container mounts will have. +# we've been seeing 3+ minute hangs when calling sync on an aufs backed mount +# so it greatly makes tests flaky as things can hang basically anywhere +VOLUME ["/tmp"] diff --git a/docker/testing/ubuntu1810_j11_w_dependencies.docker b/docker/testing/ubuntu1810_j11_w_dependencies.docker new file mode 100644 index 0000000..8f25165 --- /dev/null +++ b/docker/testing/ubuntu1810_j11_w_dependencies.docker @@ -0,0 +1,37 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# base things off the testing image without dependencies warmed up +FROM spod/cassandra-testing-ubuntu1810-java11 +MAINTAINER Stefan Podkowinski <s.podkowin...@gmail.com> + +USER cassandra +ENV HOME /home/cassandra +WORKDIR /home/cassandra + +# Fetch the maven dependencies in advance since this tends to fail at runtime +ARG CASSANDRA_GIT_URL=https://gitbox.apache.org/repos/asf/cassandra.git +RUN /bin/bash -c "git clone ${CASSANDRA_GIT_URL} ~/cassandra && \ + cd ~/cassandra && ant maven-ant-tasks-retrieve-build && \ + git checkout origin/cassandra-3.11 && ant maven-ant-tasks-retrieve-build && \ + git checkout origin/cassandra-3.0 && ant maven-ant-tasks-retrieve-build && \ + git checkout origin/cassandra-2.2 && ant maven-ant-tasks-retrieve-build && \ + git checkout origin/cassandra-2.1 && ant maven-ant-tasks-retrieve-build && \ + rm -fr ~/cassandra" + +# Initialize the CCM git repo as well as this also can fail to clone +RUN /bin/bash -c "source ~/env/bin/activate && \ + ccm create -n 1 -v git:trunk test && ccm remove test && \ + ccm create -n 1 -v git:cassandra-3.11 test && ccm remove test && \ + ccm create -n 1 -v git:cassandra-3.0 test && ccm remove test && \ + ccm create -n 1 -v git:cassandra-2.2 test && ccm remove test && \ + ccm create -n 1 -v git:cassandra-2.1 test && ccm remove test" --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org