This is an automated email from the ASF dual-hosted git repository. brandonwilliams pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra-builds.git
commit f59c8bf8c2c504475d85b261a60b5d48c9c14983 Author: Brandon Williams <dri...@gmail.com> AuthorDate: Tue Aug 30 11:40:11 2022 -0500 Add j17 to images; upgrade buster to bullseye Patch by brandonwilliams; reviewed by edimitrova for CASSANDRA-17854 --- README.md | 10 ++-- build-scripts/cassandra-deb-packaging.sh | 8 ++-- docker/almalinux-image.docker | 1 + docker/build-debs.sh | 2 +- .../{buster-image.docker => bullseye-image.docker} | 13 ++++-- docker/centos7-image.docker | 6 +++ docker/centos8-image.docker | 54 ---------------------- docker/jessie-image.docker | 49 -------------------- 8 files changed, 25 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index 2d79a87..c2f6758 100644 --- a/README.md +++ b/README.md @@ -28,16 +28,14 @@ Prior to release, make sure to edit: ```docker build -t cass-build-rpms -f docker/almalinux-image.docker docker/``` The image will contain a clone of the Apache git repository by default. Using a different repository is possible by adding the `--build-arg CASSANDRA_GIT_URL=https://github.com/myuser/cassandra.git` parameter. All successive builds will be executed based on the repository cloned during docker image creation. 2. Run build script through docker (specify branch, e.g. cassandra-3.0 and version, e.g. 3.0.11): - * Debian Jessie: - ```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=jessie -q` /home/build/build-debs.sh <branch/tag>``` - * Debian Buster - ```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=buster -q` /home/build/build-debs.sh <branch/tag>``` + * Debian Bullseye + ```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=bullseye -q` /home/build/build-debs.sh <branch/tag>``` * RPM: ```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=almalinux -q` /home/build/build-rpms.sh <branch/tag>``` -For the build by Debian Buster, you have the possibility to build Cassandra either by Java 8 (default) or by Java 11. You control the Java version like following. If you want to build with Java 8, just omit that last option. +For the build by Debian Bullseye, you have the possibility to build Cassandra either by Java 8 (default) or by Java 11. You control the Java version like following. If you want to build with Java 8, just omit that last option. -```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=buster -q` /home/build/build-debs.sh <branch/tag> 11``` +```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=bullseye -q` /home/build/build-debs.sh <branch/tag> 11``` You should find newly created Debian and RPM packages in the `dist` directory. diff --git a/build-scripts/cassandra-deb-packaging.sh b/build-scripts/cassandra-deb-packaging.sh index a1483f0..980e9a5 100755 --- a/build-scripts/cassandra-deb-packaging.sh +++ b/build-scripts/cassandra-deb-packaging.sh @@ -26,18 +26,18 @@ java_version=$2 command -v docker >/dev/null 2>&1 || { echo >&2 "docker needs to be installed"; exit 1; } (docker info >/dev/null 2>&1) || { echo >&2 "docker needs to running"; exit 1; } [ -d "${cassandra_builds_dir}" ] || { echo >&2 "cassandra-builds directory must exist"; exit 1; } -[ -f "${cassandra_builds_dir}/docker/buster-image.docker" ] || { echo >&2 "docker/buster-image.docker must exist"; exit 1; } +[ -f "${cassandra_builds_dir}/docker/bullseye-image.docker" ] || { echo >&2 "docker/bullseye-image.docker must exist"; exit 1; } [ -f "${cassandra_builds_dir}/docker/build-debs.sh" ] || { echo >&2 "docker/build-debs.sh must exist"; exit 1; } # remove any previous older built images -docker image prune --all --force --filter label=org.cassandra.buildenv=buster --filter "until=4h" || true +docker image prune --all --force --filter label=org.cassandra.buildenv=bullseye --filter "until=4h" || true pushd $cassandra_builds_dir # Create build images containing the build tool-chain, Java and an Apache Cassandra git working directory -docker build --build-arg CASSANDRA_GIT_URL=$CASSANDRA_GIT_URL --build-arg UID_ARG=`id -u` --build-arg GID_ARG=`id -g` -t cassandra-artifacts-buster:${sha} -f docker/buster-image.docker docker/ +docker build --build-arg CASSANDRA_GIT_URL=$CASSANDRA_GIT_URL --build-arg UID_ARG=`id -u` --build-arg GID_ARG=`id -g` -t cassandra-artifacts-bullseye:${sha} -f docker/bullseye-image.docker docker/ # Run build script through docker (specify branch, tag, or sha) -docker run --rm -v "${deb_dir}":/dist -v ~/.m2/repository/:/home/build/.m2/repository/ cassandra-artifacts-buster:${sha} /home/build/build-debs.sh ${sha} ${java_version} +docker run --rm -v "${deb_dir}":/dist -v ~/.m2/repository/:/home/build/.m2/repository/ cassandra-artifacts-bullseye:${sha} /home/build/build-debs.sh ${sha} ${java_version} popd diff --git a/docker/almalinux-image.docker b/docker/almalinux-image.docker index 3b7b17a..db38d87 100644 --- a/docker/almalinux-image.docker +++ b/docker/almalinux-image.docker @@ -24,6 +24,7 @@ RUN yum -y install \ git \ java-1.8.0-openjdk-devel \ java-11-openjdk-devel \ + java-17-openjdk-devel \ make \ rpm-build \ sudo \ diff --git a/docker/build-debs.sh b/docker/build-debs.sh index 52e323a..f9e5366 100755 --- a/docker/build-debs.sh +++ b/docker/build-debs.sh @@ -1,5 +1,5 @@ #!/bin/bash -x -# Expected to be run from inside cassandra-builds/docker/buster-image.docker +# Expected to be run from inside cassandra-builds/docker/bullseye-image.docker set -e if [ "$#" -lt 1 ]; then diff --git a/docker/buster-image.docker b/docker/bullseye-image.docker similarity index 79% rename from docker/buster-image.docker rename to docker/bullseye-image.docker index c24167c..976e433 100644 --- a/docker/buster-image.docker +++ b/docker/bullseye-image.docker @@ -1,4 +1,4 @@ -FROM debian:buster +FROM debian:bullseye ENV DEB_DIST_DIR=/dist ENV BUILD_HOME=/home/build @@ -6,7 +6,7 @@ ENV CASSANDRA_DIR=$BUILD_HOME/cassandra ARG UID_ARG=1000 ARG GID_ARG=1000 -LABEL org.cassandra.buildenv=buster +LABEL org.cassandra.buildenv=bullseye VOLUME ${DEB_DIST_DIR} @@ -27,15 +27,20 @@ RUN apt-get update && apt-get -y install \ curl \ devscripts \ git \ + python2 \ sudo -RUN echo 'deb http://ftp.debian.org/debian stretch main' >> /etc/apt/sources.list \ +RUN echo 'deb http://ftp.debian.org/debian bullseye main' >> /etc/apt/sources.list \ + && echo 'deb http://ftp.debian.org/debian stretch main' >> /etc/apt/sources.list \ && apt-get update \ - && apt-get install -y --no-install-recommends openjdk-8-jdk openjdk-11-jdk \ + && apt-get install -y --no-install-recommends openjdk-8-jdk openjdk-11-jdk openjdk-17-jdk \ && sed -i '$d' /etc/apt/sources.list \ && apt-get update \ && update-java-alternatives --set java-1.8.0-openjdk-$(dpkg --print-architecture) +# dh-python is incompatible with python-is-python2, so we'll link it ourselves +RUN ln -s /usr/bin/python2 /usr/bin/python + # create and change to build user RUN groupadd --gid ${GID_ARG} --non-unique build \ && adduser --uid ${UID_ARG} --gid ${GID_ARG} --disabled-login --gecos build build \ diff --git a/docker/centos7-image.docker b/docker/centos7-image.docker index 0044bdb..f20ce44 100644 --- a/docker/centos7-image.docker +++ b/docker/centos7-image.docker @@ -41,6 +41,12 @@ RUN ln -sfn /opt/apache-ant-${ANT_VERSION} /opt/ant RUN sh -c 'echo ANT_HOME=/opt/ant >> /etc/environment' RUN ln -sfn /opt/ant/bin/ant /usr/bin/ant +RUN until curl -S -s --retry 9 --retry-delay 1 https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz -o openjdk-17.0.2_linux-x64_bin.tar.gz ; do echo "curl failed… trying again… " ; done +RUN tar xvf openjdk-17.0.2_linux-x64_bin.tar.gz +RUN mv jdk-17.0.2 /opt/jdk-17 + + + RUN pip3 install --upgrade pip # create and change to build user diff --git a/docker/centos8-image.docker b/docker/centos8-image.docker deleted file mode 100644 index 226dcec..0000000 --- a/docker/centos8-image.docker +++ /dev/null @@ -1,54 +0,0 @@ -FROM centos:8.3.2011 - -ENV BUILD_HOME=/home/build -ENV RPM_BUILD_DIR=$BUILD_HOME/rpmbuild -ENV RPM_DIST_DIR=/dist -ENV CASSANDRA_DIR=$BUILD_HOME/cassandra -ARG UID_ARG=1000 -ARG GID_ARG=1000 - -LABEL org.cassandra.buildenv=centos - -VOLUME ${RPM_DIST_DIR} - -RUN echo "Building with arguments:" \ - && echo " - DEB_DIST_DIR=${DEB_DIST_DIR}" \ - && echo " - BUILD_HOME=${BUILD_HOME}" \ - && echo " - CASSANDRA_DIR=${CASSANDRA_DIR}" \ - && echo " - UID_ARG=${UID_ARG}" \ - && echo " - GID_ARG=${GID_ARG}" - -# install deps -RUN yum -y install \ - ant \ - git \ - java-1.8.0-openjdk-devel \ - java-11-openjdk-devel \ - make \ - rpm-build \ - sudo \ - python3-pip - -RUN until curl -S -s --retry 9 --retry-connrefused --retry-delay 1 http://mirror.centos.org/centos/7/os/x86_64/Packages/ant-junit-1.9.4-2.el7.noarch.rpm -o ant-junit-1.9.4-2.el7.noarch.rpm ; do echo "curl failed… trying again… " ; done - -RUN rpm -i --nodeps ant-junit-1.9.4-2.el7.noarch.rpm - -RUN pip3 install --upgrade pip - -# create and change to build user -RUN groupadd --gid ${GID_ARG} --non-unique build \ - && adduser --uid ${UID_ARG} --gid ${GID_ARG} build -RUN echo "build ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/build && \ - chmod 0440 /etc/sudoers.d/build - -USER build - -RUN mkdir -p $RPM_BUILD_DIR/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} - -# Clone Cassandra and cache maven artifacts -ARG CASSANDRA_GIT_URL=https://github.com/apache/cassandra.git -RUN git config --global http.postBuffer 524288000 -RUN git clone ${CASSANDRA_GIT_URL} ${CASSANDRA_DIR} -WORKDIR $CASSANDRA_DIR - -COPY build-rpms.sh $BUILD_HOME/ diff --git a/docker/jessie-image.docker b/docker/jessie-image.docker deleted file mode 100644 index b564a15..0000000 --- a/docker/jessie-image.docker +++ /dev/null @@ -1,49 +0,0 @@ -FROM debian:jessie-backports - -ENV DEB_DIST_DIR=/dist -ENV BUILD_HOME=/home/build -ENV CASSANDRA_DIR=$BUILD_HOME/cassandra - -LABEL org.cassandra.buildenv=jessie - -VOLUME ${DEB_DIST_DIR} - -# configure apt to retry downloads -RUN echo 'APT::Acquire::Retries "9";' > /etc/apt/apt.conf.d/80-retries - -RUN rm /etc/apt/sources.list.d/backports.list -RUN echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list - -# install deps -RUN apt-get update -o Acquire::Check-Valid-Until=false && apt-get -y install \ - ant \ - build-essential \ - curl \ - devscripts \ - git \ - sudo - -RUN apt-get -y -t jessie-backports --no-install-recommends install \ - openjdk-7-jdk \ - openjdk-8-jdk - -RUN apt-get -y -t jessie-backports install \ - python-sphinx \ - python-sphinx-rtd-theme - -RUN update-java-alternatives --set java-1.8.0-openjdk-$(dpkg --print-architecture) - -# create and change to build user -RUN adduser --disabled-login --gecos build build && gpasswd -a build sudo -RUN echo "build ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/build && \ - chmod 0440 /etc/sudoers.d/build - -USER build - -# clone Cassandra and cache maven artifacts -ARG CASSANDRA_GIT_URL=https://github.com/apache/cassandra.git -RUN git config --global http.postBuffer 524288000 -RUN git clone ${CASSANDRA_GIT_URL} ${CASSANDRA_DIR} -WORKDIR ${CASSANDRA_DIR} - -COPY build-debs.sh $BUILD_HOME/ --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org