From: Alfredo Deza Date: Mon, 1 Jun 2015 21:02:42 +0000 (-0400) Subject: port all scripts to build/build in ceph-deploy X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4c8409d7ca95d8b534f934d0be9d53dcff61cfab;p=ceph-build.git port all scripts to build/build in ceph-deploy Signed-off-by: Alfredo Deza --- diff --git a/ceph-deploy/build/build b/ceph-deploy/build/build new file mode 100644 index 00000000..834d1965 --- /dev/null +++ b/ceph-deploy/build/build @@ -0,0 +1,181 @@ +#!/bin/sh + +# This is the script that runs inside Jenkins. +# http://jenkins.ceph.com/job/ceph-deploy/ + +set -x +set -e + +# Jenkins will set $RELEASE as a parameter in the job configuration. +if $RELEASE ; then + # This is a formal release. Sign it with the release key. + export GNUPGHOME=/home/jenkins-build/build/gnupg.ceph-release/ + export KEYID=17ED316D +else + # This is an automatic build. Sign it with the autobuild key. + export GNUPGHOME=/home/jenkins-build/build/gnupg.autobuild/ + export KEYID=03C3951A +fi + +HOST=$(hostname --short) +echo "Building on ${HOST}" +echo " DIST=${DIST}" +echo " BPTAG=${BPTAG}" +echo " KEYID=${KEYID}" +echo " WS=$WORKSPACE" +echo " PWD=$(pwd)" +echo " BRANCH=$BRANCH" + +case $HOST in +gitbuilder-*-rpm*) + rm -rf rpm-repo dist/* build/rpmbuild + + # Tag tree and update version number in change log and + # in setup.py before building. + + REPO=rpm-repo + KEYID=${KEYID:-03C3951A} # Default is autobuild-key + BUILDAREA=./rpmbuild + DIST=el6 + RPM_BUILD=$(lsb_release -s -c) + + if [ ! -e setup.py ] ; then + echo "Are we in the right directory" + exit 1 + fi + + if gpg --list-keys 2>/dev/null | grep -q ${KEYID} ; then + echo "Signing packages and repo with ${KEYID}" + else + echo "Package signing key (${KEYID}) not found" + echo "Have you set \$GNUPGHOME ? " + exit 3 + fi + + if ! CREATEREPO=`which createrepo` ; then + echo "Please install the createrepo package" + exit 4 + fi + + # Create Tarball + python setup.py sdist --formats=bztar + + # Build RPM + mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} + BUILDAREA=`readlink -fn ${BUILDAREA}` ### rpm wants absolute path + cp ceph-deploy.spec ${BUILDAREA}/SPECS + cp dist/*.tar.bz2 ${BUILDAREA}/SOURCES + echo "buildarea is: ${BUILDAREA}" + rpmbuild -ba --define "_topdir ${BUILDAREA}" --define "_unpackaged_files_terminate_build 0" ${BUILDAREA}/SPECS/ceph-deploy.spec + + # create repo + DEST=${REPO}/${DIST} + mkdir -p ${REPO}/${DIST} + cp -r ${BUILDAREA}/*RPMS ${DEST} + + # Sign all the RPMs for this release + rpm_list=`find ${REPO} -name "*.rpm" -print` + rpm --addsign --define "_gpg_name ${KEYID}" $rpm_list + + # Construct repodata + for dir in ${DEST}/SRPMS ${DEST}/RPMS/* + do + if [ -d $dir ] ; then + createrepo $dir + gpg --detach-sign --armor -u ${KEYID} $dir/repodata/repomd.xml + fi + done + + cd $WORKSPACE + mkdir -p dist + exit 0 + ;; +gitbuilder-cdep-deb* | tala* | mira*) + rm -rf debian-repo + rm -rf dist + rm -f ../*.changes ../*.dsc ../*.gz ../*.diff + + # Tag tree and update version number in change log and + # in setup.py before building. + + REPO=debian-repo + COMPONENT=main + KEYID=${KEYID:-03C3951A} # default is autobuild keyid + DEB_DIST="sid wheezy squeeze quantal precise oneiric natty raring" + DEB_BUILD=$(lsb_release -s -c) + #XXX only releases until we fix this + RELEASE=1 + + if [ ! -d debian ] ; then + echo "Are we in the right directory" + exit 1 + fi + + if gpg --list-keys 2>/dev/null | grep -q ${KEYID} ; then + echo "Signing packages and repo with ${KEYID}" + else + echo "Package signing key (${KEYID}) not found" + echo "Have you set \$GNUPGHOME ? " + exit 3 + fi + + # Clean up any leftover builds + rm -f ../ceph-deploy*.dsc ../ceph-deploy*.changes ../ceph-deploy*.deb ../ceph-deploy.tgz + rm -rf ./debian-repo + + # Apply backport tag if release build + # I am going to jump out the window if this is not fixed and removed from the source + # of this package. There is absolutely **NO** reason why we need to hard code the + # DEBEMAIL like this. + if [ $RELEASE -eq 1 ] ; then + DEB_VERSION=$(dpkg-parsechangelog | sed -rne 's,^Version: (.*),\1, p') + BP_VERSION=${DEB_VERSION}${BPTAG} + DEBEMAIL="alfredo.deza@inktank.com" dch -D $DIST --force-distribution -b -v "$BP_VERSION" "$comment" + dpkg-source -b . + fi + + # Build Package + echo "Building for dist: $DEB_BUILD" + dpkg-buildpackage -k$KEYID + if [ $? -ne 0 ] ; then + echo "Build failed" + exit 2 + fi + + # Build Repo + PKG=../ceph-deploy*.changes + mkdir -p $REPO/conf + if [ -e $REPO/conf/distributions ] ; then + rm -f $REPO/conf/distributions + fi + + for DIST in $DEB_DIST ; do + cat <> $REPO/conf/distributions + Codename: $DIST + Suite: stable + Components: $COMPONENT + Architectures: amd64 armhf i386 source + Origin: Inktank + Description: Ceph distributed file system + DebIndices: Packages Release . .gz .bz2 + DscIndices: Sources Release .gz .bz2 + Contents: .gz .bz2 + SignWith: $KEYID + + EOF + done + + echo "Adding package to repo, dist: $DEB_BUILD ($PKG)" + reprepro --ask-passphrase -b $REPO -C $COMPONENT --ignore=undefinedtarget --ignore=wrongdistribution include $DEB_BUILD $PKG + + + cd $WORKSPACE + mkdir -p dist + mv ../*.changes ../*.dsc ../*.deb ../*.tar.gz dist/. + echo "Done" + ;; +*) + echo "Can't determine build host type" + exit 4 + ;; +esac