#!/bin/bash # # Script for providing tarballs of tiki releases (snapshots) # # You have to configure paths and svn user in the marked section below. # Your svn login data must be availabe in ~/.subversion, see svn docs. # # Usage: $0 # Example: $0 trunk VERSION=$1 if [ "${VERSION}" = "" ]; then echo "ERROR: version parameter missing (eg 'trunk', '9', '11')" exit fi BRANCH=${VERSION} if [ ! "${VERSION}" = "trunk" ]; then BRANCH=BRANCH-${VERSION}-x fi # --- configuration --- edit here --- SVNUSER=ohertel LOGFILE="/var/log/tiki/svnlog_${BRANCH}" TARGET="/var/www/tikiwiki.org/tar/" BASE=/opt # --- configuration --- edit here --- OLDIR=`pwd` PACKDIR=${BASE}/data/packaging mkdir -p ${BASE}/data/arc ${PACKDIR} ${TARGET} # start new logfile with timestamp as first entry date > ${LOGFILE} # always rebuild trunk from scratch (for now!) if [ "${BRANCH}" = "trunk" ]; then rm -rf ${BASE}/data/${BRANCH} fi if [ ! -d "${BASE}/data/${BRANCH}" ]; then echo "Folder doesn't exist yet, checking out project ..." cd ${BASE}/data if [ "${BRANCH}" = "trunk" ]; then svn checkout --username ${SVNUSER} https://svn.code.sf.net/p/tikiwiki/code/${BRANCH} ${BRANCH} 2>&1 >> ${LOGFILE} else svn checkout --username ${SVNUSER} https://svn.code.sf.net/p/tikiwiki/code/branches/${VERSION}.x ${BRANCH} 2>&1 >> ${LOGFILE} fi LINE=`tail -1 ${LOGFILE}` RC=`echo "${LINE}" | grep "Checked out revision"` if [ "${RC}" = "" ]; then echo "ERROR: could not check out project: ${LINE}" exit fi else echo "Folder exists, updating project ..." cd ${BASE}/data/${BRANCH} svn update 2>&1 >> ${LOGFILE} LINE=`tail -1 ${LOGFILE}` RC=`echo "${LINE}" | grep "At revision"` if [ "${RC}" = "" ]; then RC=`echo "${LINE}" | grep "Updated to revision"` if [ "${RC}" = "" ]; then echo "ERROR: could not update project: ${LINE}" exit fi else echo "INFO: no need to update: ${LINE}" exit fi fi echo "Cleanup packaging folder and rebuild" rm -rf ${PACKDIR}/${BRANCH} cp -r ${BASE}/data/${BRANCH} ${PACKDIR} # cleanup if [ -d "${PACKDIR}/${BRANCH}" ]; then cd ${PACKDIR}/${BRANCH} echo "Current folder: `pwd`" echo "Removing temp files and cache files, if any" # no tests needed and no temporary files: rm -rf tests *.core *.tmp *.bak *.tpl.php temp/cache mkdir -p temp/cache echo "Hopefully no one has checked in his password file, we better remove it now" rm -f db/local.php echo "Chmodding setup.sh" chmod u+x setup.sh echo "Executing setup.sh" ./setup.sh -u www-data -g www-data -n fix echo "Removing svn config files" find . -name ".svn" | xargs -n 1 rm -rf echo "Adding timestamp file to archive" echo "Last update: " > .timestamp echo `date` >> .timestamp cd ${PACKDIR} echo "Creating tar.bz2 file" rm -f ${BASE}/data/arc/lastiki_${BRANCH}.tar.bz2_previous mv ${BASE}/data/arc/lastiki_${BRANCH}.tar.bz2 ${BASE}/data/arc/lastiki_${BRANCH}.tar.bz2_previous tar -cjf ${BASE}/data/arc/lastiki_${BRANCH}.tar.bz2 ${BRANCH} echo "Createing zip file" rm -f ${BASE}/data/arc/lastiki_${BRANCH}.zip_previous mv ${BASE}/data/arc/lastiki_${BRANCH}.zip ${BASE}/data/arc/lastiki_${BRANCH}.zip_previous zip -rq ${BASE}/data/arc/lastiki_${BRANCH}.zip ${BRANCH} chown www-data:www-data ${BASE}/data/arc/lastiki_${BRANCH}.zip chmod a+r ${BASE}/data/arc/lastiki_${BRANCH}.zip echo "Copying archives to docroot folder" cp ${BASE}/data/arc/lastiki_${BRANCH}.tar.bz2_previous ${TARGET} cp ${BASE}/data/arc/lastiki_${BRANCH}.tar.bz2 ${TARGET} cp ${BASE}/data/arc/lastiki_${BRANCH}.zip_previous ${TARGET} cp ${BASE}/data/arc/lastiki_${BRANCH}.zip ${TARGET} echo "Creating md5 files" cd ${TARGET} FILES=`/bin/ls * | grep -v md5 | grep -v grep` for FILE in ${FILES} do md5sum ${FILE} > ${FILE}.md5 chmod a+r * done else echo "ERROR: Folder not found after svn checkout." exit fi cd ${OLDIR} echo "Finish" # eof