do-nightly-tests-and-publish at [0d35af4b22]

File build/test/do-nightly-tests-and-publish artifact 75aae2a48d part of check-in 0d35af4b22


#! /bin/bash

# Update PATH to include path to Tclkit, otherwise cross-compiles will fail
PATH="${PATH}:/home/rkeene/bin:/usr/local/bin"
export PATH

# Define build and web paths
KITCREATORDIR="/home/rkeene/devel/kitcreator"
WEBROOTDIR="/web/rkeene/devel/kitcreator/kitbuild"
export KITCREATORDIR WEBROOTDIR

cd "${KITCREATORDIR}" || exit 1

FOSSIL_CHANGE="$(fossil timeline -n 1 -t ci | grep '^[0-9:]* \[' | sed 's@^[0-9:]* \[\([0-9a-f]*\)\].*$@\1@')"
TESTNAME="fossil_${FOSSIL_CHANGE}"
export FOSSIL_CHANGE TESTNAME

# On Wednesday, do a distclean to force redownloading everything (mainly
# for CVS Head) and force a rebuild to ensure up-to-date build status
if [ "$(date '+%u')" = "3" ]; then
	./kitcreator distclean || exit 1
else
	if [ -d "${WEBROOTDIR}/${TESTNAME}" ]; then
		# Don't re-run the tests if nothing has changed
		exit 0
	fi
fi

cd build/test || exit 1

if [ ! -x test -o ! -x publish-tests ]; then
	echo 'Missing scripts, aborting.' >&2

	exit 1
fi

# Only run one at a time
if [ -f '__AUTO_TESTS_RUNNING__' ]; then
	exit 1
fi
touch '__AUTO_TESTS_RUNNING__'

# Clean builds
rm -rf kits

# Run tests
nice -n 20 ./test >/dev/null 2>/dev/null

# Clean old auto-generated published results
rm -rf "${WEBROOTDIR}"/svn_r*/ "${WEBROOTDIR}"/fossil_*/

# Publish New Results
./publish-tests "${TESTNAME}"

# Create nightly symlink
rm -f "${WEBROOTDIR}/nightly"
ln -s "${TESTNAME}" "${WEBROOTDIR}/nightly"

# Clean
rm -f '__AUTO_TESTS_RUNNING__'

exit 0