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
+

Reply via email to