Repository: cassandra-builds Updated Branches: refs/heads/master ac05c7153 -> f31eb5f04
Update Dockerfiles for building RPMs and Debian packages * Creates re-usable docker images for build environment * Actual build is executed using `docker run` and dedicated build scripts * Resulting packages will end up in local dist directory Project: http://git-wip-us.apache.org/repos/asf/cassandra-builds/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra-builds/commit/f31eb5f0 Tree: http://git-wip-us.apache.org/repos/asf/cassandra-builds/tree/f31eb5f0 Diff: http://git-wip-us.apache.org/repos/asf/cassandra-builds/diff/f31eb5f0 Branch: refs/heads/master Commit: f31eb5f04e451a1b06407416d271a9f23bf6946f Parents: ac05c71 Author: Stefan Podkowinski <[email protected]> Authored: Fri Feb 17 14:19:12 2017 +0100 Committer: Michael Shuler <[email protected]> Committed: Wed Feb 22 09:02:38 2017 -0600 ---------------------------------------------------------------------- .gitignore | 1 + README.md | 24 +++++++++++++++-- dist/.keep | 0 docker-wip/centos7-rpmbuild.docker | 15 ----------- docker-wip/jessie-debbuild.docker | 31 ---------------------- docker/build-debs.sh | 19 +++++++++++++ docker/build-rpms.sh | 20 ++++++++++++++ docker/centos7-image.docker | 47 +++++++++++++++++++++++++++++++++ docker/jessie-image.docker | 43 ++++++++++++++++++++++++++++++ 9 files changed, 152 insertions(+), 48 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/.gitignore ---------------------------------------------------------------------- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7bb4cf8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +dist/cassandra* http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/README.md ---------------------------------------------------------------------- diff --git a/README.md b/README.md index 190fba0..056316e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,22 @@ -# cassandra-builds -Apache Cassandra Builds +# Cassandra Build Tools + +Collection of scripts that can be used to create Cassandra Linux packages and to push them to repositories. + +## Building packages + +1. Create build images containing the build tool-chain, Java and a Cassandra git working directory + * Debian: + ```docker build -f docker/jessie-image.docker docker/``` + * RPM: + ```docker build -f docker/centos7-image.docker docker/``` +2. Run build script through docker (specify branch, e.g. cassandra-3.0 and version, e.g. 3.0.11): + * Debian: + ```docker run -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=centos -q` /home/build/build-rpms.sh <branch> <version>``` + * RPM: + ```docker run -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=jessie -q` /home/build/build-debs.sh <branch>``` + +You should find newly created Debian and RPM packages in the `dist` directory. + +## Publishing packages + +TODO http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/dist/.keep ---------------------------------------------------------------------- diff --git a/dist/.keep b/dist/.keep new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/docker-wip/centos7-rpmbuild.docker ---------------------------------------------------------------------- diff --git a/docker-wip/centos7-rpmbuild.docker b/docker-wip/centos7-rpmbuild.docker deleted file mode 100644 index 22c9429..0000000 --- a/docker-wip/centos7-rpmbuild.docker +++ /dev/null @@ -1,15 +0,0 @@ -FROM centos:7.0.1406 - -# install deps -RUN yum -y install ant epel-release git java-1.7.0-openjdk-devel java-1.8.0-openjdk-devel make rpm-build -RUN yum -y install python2-pip -RUN pip install Sphinx sphinx_rtd_theme -RUN mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} - -RUN git clone https://git.apache.org/cassandra.git -# javadoc target is broken in docker without this mkdir -RUN mkdir -p cassandra/build/javadoc -RUN cd cassandra/ ; ant artifacts -Drelease=true -RUN cp cassandra/build/apache-cassandra-*-src.tar.gz /root/rpmbuild/SOURCES/ -RUN rpmbuild --define="version 4.0" -ba cassandra/redhat/cassandra.spec -RUN ls -lR /root/rpmbuild/*RPMS/ http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/docker-wip/jessie-debbuild.docker ---------------------------------------------------------------------- diff --git a/docker-wip/jessie-debbuild.docker b/docker-wip/jessie-debbuild.docker deleted file mode 100644 index 40c7b28..0000000 --- a/docker-wip/jessie-debbuild.docker +++ /dev/null @@ -1,31 +0,0 @@ -FROM debian:jessie-backports - -# install deps -RUN apt-get update -RUN apt-get -y install ant build-essential curl devscripts git -RUN apt-get -y --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-amd64 - -RUN curl -fL --retry 3 --retry-delay 3 -O --header 'Cookie: oraclelicense=accept-securebackup-cookie' http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.tar.gz -RUN curl -fL --retry 3 --retry-delay 3 -O --header 'Cookie: oraclelicense=accept-securebackup-cookie' http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip -RUN echo "777bd7d5268408a5a94f5e366c2e43e720c6ce4fe8c59d9a71e2961e50d774a5 jdk-8u112-linux-x64.tar.gz" | sha256sum -c -RUN echo "f3020a3922efd6626c2fff45695d527f34a8020e938a49292561f18ad1320b59 jce_policy-8.zip" | sha256sum -c -RUN curl -fLC - --retry 3 --retry-delay 3 -O --header 'Cookie: oraclelicense=accept-securebackup-cookie' http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz -RUN curl -fL --retry 3 --retry-delay 3 -O --header 'Cookie: oraclelicense=accept-securebackup-cookie' http://download.oracle.com/otn-pub/java/jce/7/UnlimitedJCEPolicyJDK7.zip -RUN echo "bad9a731639655118740bee119139c1ed019737ec802a630dd7ad7aab4309623 jdk-7u80-linux-x64.tar.gz" | sha256sum -c -RUN echo "7a8d790e7bd9c2f82a83baddfae765797a4a56ea603c9150c87b7cdb7800194d UnlimitedJCEPolicyJDK7.zip" | sha256sum -c - -# untar/zip, replace JCE bits -# symlink to something generic -# set JAVA_HOMEs for upgrade - - - -### test deps setup above -# can we clone and build? -RUN git clone https://git.apache.org/cassandra.git -# javadoc target is broken in docker without this mkdir -RUN mkdir -p cassandra/build/javadoc -RUN cd cassandra/ ; ant artifacts -RUN cd cassandra/ ; echo "y" | mk-build-deps --install ; dpkg-buildpackage -uc -us http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/docker/build-debs.sh ---------------------------------------------------------------------- diff --git a/docker/build-debs.sh b/docker/build-debs.sh new file mode 100755 index 0000000..f550a25 --- /dev/null +++ b/docker/build-debs.sh @@ -0,0 +1,19 @@ +#!/bin/bash -x +set -eu + +if [ "$#" -ne 1 ]; then + echo "build-debs.sh branch" + exit 1 +fi + +CASSANDRA_BRANCH=$1 + +cd $CASSANDRA_DIR +git fetch +git checkout origin/$CASSANDRA_BRANCH +# javadoc target is broken in docker without this mkdir +mkdir -p ./build/javadoc +ant artifacts -Drelease=true +echo "y" | sudo mk-build-deps --install +dpkg-buildpackage -uc -us +cp ../cassandra[-_]* $DEB_DIST_DIR http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/docker/build-rpms.sh ---------------------------------------------------------------------- diff --git a/docker/build-rpms.sh b/docker/build-rpms.sh new file mode 100755 index 0000000..1ffcd27 --- /dev/null +++ b/docker/build-rpms.sh @@ -0,0 +1,20 @@ +#!/bin/bash -x +set -eu + +if [ "$#" -ne 2 ]; then + echo "build-rpms.sh branch version" + exit 1 +fi + +CASSANDRA_BRANCH=$1 +CASSANDRA_VERSION=$2 + +cd $CASSANDRA_DIR +git fetch +git checkout origin/$CASSANDRA_BRANCH +# javadoc target is broken in docker without this mkdir +mkdir -p ./build/javadoc +ant artifacts -Drelease=true +cp ./build/apache-cassandra-*-src.tar.gz ${RPM_BUILD_DIR}/SOURCES/ +rpmbuild --define="version ${CASSANDRA_VERSION}" -ba ./redhat/cassandra.spec +cp $RPM_BUILD_DIR/SRPMS/*.rpm $RPM_BUILD_DIR/RPMS/noarch/*.rpm $RPM_DIST_DIR http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/docker/centos7-image.docker ---------------------------------------------------------------------- diff --git a/docker/centos7-image.docker b/docker/centos7-image.docker new file mode 100644 index 0000000..f9b1e16 --- /dev/null +++ b/docker/centos7-image.docker @@ -0,0 +1,47 @@ +FROM centos:7.0.1406 + +ENV BUILD_HOME=/home/build +ENV RPM_BUILD_DIR=$BUILD_HOME/rpmbuild +ENV RPM_DIST_DIR=/dist +ENV CASSANDRA_DIR=$BUILD_HOME/cassandra + +LABEL org.cassandra.buildenv=centos + +VOLUME ${RPM_DIST_DIR} + +# install deps +RUN yum -y install \ + ant \ + ant-junit \ + epel-release \ + git \ + java-1.7.0-openjdk-devel \ + java-1.8.0-openjdk-devel \ + make \ + rpm-build \ + sudo + +# via epel-releases +RUN yum -y install python2-pip + +# install Sphinx to generate docs +RUN pip install \ + Sphinx \ + sphinx_rtd_theme \ + urllib3 + +# create and change to build user +RUN adduser 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 +RUN git clone https://git.apache.org/cassandra.git ${CASSANDRA_DIR} +WORKDIR $CASSANDRA_DIR +RUN ant maven-ant-tasks-retrieve-build + +COPY build-rpms.sh $BUILD_HOME http://git-wip-us.apache.org/repos/asf/cassandra-builds/blob/f31eb5f0/docker/jessie-image.docker ---------------------------------------------------------------------- diff --git a/docker/jessie-image.docker b/docker/jessie-image.docker new file mode 100644 index 0000000..3de19d2 --- /dev/null +++ b/docker/jessie-image.docker @@ -0,0 +1,43 @@ +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} + +# install deps +RUN apt-get update && 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-amd64 + +# 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 +RUN git clone https://git.apache.org/cassandra.git ${CASSANDRA_DIR} +WORKDIR ${CASSANDRA_DIR} +RUN ant maven-ant-tasks-retrieve-build + +COPY build-debs.sh $BUILD_HOME +
